记一次Python爬虫开发经历
为啥要做Python爬虫,是因为我去找电影的某个网站有点坑,它支持tag标签查询自己喜欢的电影,但是不支持双标签或者三标签查询。由于一个电影对应多种类型(tag),这就意味着,我需要进入这个电影介绍界面,看看他的tag是不是我需要的。太麻烦了。于是我想着做一个python爬虫。
首先需求分析。
流程如下:在网站的主界面获得每部电影的URL——》进入每部电影的介绍界面——》判断它的tag是否符合要求,如果符合返回这部电影的名字——》把满足条件的URL和电影名字保存为文件——》下一页
很简单的一个需求,基本两个FOR循环解决问题。
之前是做java的,Java也能做,但是一直听说python爬虫python爬虫,于是想着既然python简单,那么就用python来做吧。的确简单。
首先安装好python,这不用多说。
然后上知乎搜索一下 “python 爬虫”,大致看了几篇文章,推荐用 Requests 和Scrapy的比较多。Scrapy是个爬虫框架,我这么简单的需求要框架干嘛。就决定用requests了。
- pip install requests
首先装好 requests,按照知乎上的教程,在python自带的编辑器上打出下面的代码:
- import requests
response = requests.get('https://www.baidu.com/')- context = response.text
- print(context)
看到控制台上输出一串字符,颇有成就感。毕竟自己的第一个python程序啊。
但问题出现了,我要爬取的网站需要翻墙啊。在网上搜了一下,requests支持代理,于是又加了下面的代码:
- proxies = {
- 'https': 'https://127.0.0.1:1080',
- 'http': 'http://127.0.0.1:1080'
- }
- headers = {
- 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'
- }
可以用, 但代码行数已经有点多了,我需要一个python编辑器,虽然我装有宇宙第一IDE,但我当时并不知道VS支持python的,毕竟我只用它来写.Net程序。于是上网搜一下,都推荐pycharm,好,就是你了。
安装调试好pycharm,又按照网上的教程亦步亦趋的继续。
又出现了个问题,谷歌一下说是缩进的问题(吐槽一下,我一整天,遇到的大部分问题都是缩进问题),我检查了一下,缩进没问题啊。把代码复制到NotePad++里检查一下,原来Pycharm会自动把tab制表符换为四个空格,由于我是用NotePad++和Pycharm混合编辑这个py文件的,导致里面的代码,缩进部分有的是[tab],有的是四个空格,操蛋,原来Python不支持tab和空格混用。于是改为用NotePad++编辑,使用Pycharm运行。
很好,这个requests我至少会用他的get方法了,其他的我暂时还用不到,现在需要的是使用正则找到这些电影的URL。顺便在吃午饭的时候大致看了一下廖雪峰的Python教程,看了一下基本语法。
网址:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000
我对正则也不是很了解,不过我现在只需要写一个能用的程序,于是使用最简单暴力的方式:取那个URL所在的那一整块,到时候用字符串截取的方式把多余的部分截取掉就行了。这样对正则表达式的要求就简单多了。
遍历每个URL,再使用requests获取到网页内容,使用正则获取到网页内容中的tag部分,查找这些tag有没有自己需要的。
这时我又遇见一个缩进问题,检查了半天,报错那一行格式没问题啊。又再检查整体代码,嘛,我一个try忘记写excep了,那么你报try的错误啊,报缩进错误干嘛。
还有一次也是同样的缩进的问题,检查了半天,报错的那一行的确格式没问题啊,突然看到,我一个else: 没有写要处理的内容就直接跳出一个 if 代码块了,是不是这个导致的,把这个else: 删掉。问题解决。
真坑。
总体而言,python作为一门弱类型语言,还是挺容易上手的,我之前都没有接触过python,一天之内通过各种谷歌的方式竟然写了一个能用的脚本了。要是放在java或者C#,一天的时间可能还在忙活着装java环境,配置IDE,了解各个数据类型那些。
但python的缩进的确是个大坑。
python的运行速度真心慢。当然比我人工快多了,以后可以考虑多线程的情况。
PS: 你问我找这么多电影干嘛?
这种需要快进看的电影,当然多多益善了。
记一次Python爬虫开发经历的更多相关文章
- Python爬虫开发与项目实战
Python爬虫开发与项目实战(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1MFexF6S4No_FtC5U2GCKqQ 提取码:gtz1 复制这段内容后打开百度 ...
- Python爬虫开发
1. 语法入门 Python教程 2. 爬虫学习系列教程 1)宁哥的小站 https://github.com/lining0806/PythonSpiderNotes 2)Python爬虫开发 3) ...
- Python爬虫开发与项目实战pdf电子书|网盘链接带提取码直接提取|
Python爬虫开发与项目实战从基本的爬虫原理开始讲解,通过介绍Pthyon编程语言与HTML基础知识引领读者入门,之后根据当前风起云涌的云计算.大数据热潮,重点讲述了云计算的相关内容及其在爬虫中的应 ...
- Python爬虫开发教程
正文 现在Python语言大火,在网络爬虫.人工智能.大数据等领域都有很好的应用.今天我向大家介绍一下Python爬虫的一些知识和常用类库的用法,希望能对大家有所帮助.其实爬虫这个概念很简单,基 ...
- Python爬虫开发【第1篇】【Scrapy框架】
Scrapy 框架介绍 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架. Srapy框架,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以 ...
- Python爬虫开发【第1篇】【Scrapy shell】
Scrapy Shell Scrapy终端是一个交互终端,我们可以在未启动spider的情况下尝试及调试代码,也可以用来测试XPath或CSS表达式,查看他们的工作方式,方便我们爬取的网页中提取的数据 ...
- Python爬虫开发【第1篇】【Scrapy入门】
Scrapy的安装介绍 Scrapy框架官方网址:http://doc.scrapy.org/en/latest Scrapy中文维护站点:http://scrapy-chs.readthedocs. ...
- Python爬虫开发【第1篇】【机器视觉及Tesseract】
ORC库概述 在读取和处理图像.图像相关的机器学习以及创建图像等任务中,Python 一直都是非常出色的语言.虽然有很多库可以进行图像处理,但在这里我们只重点介绍:Tesseract 1.Tesser ...
- Python爬虫开发【第1篇】【动态HTML、Selenium、PhantomJS】
JavaScript JavaScript 是网络上最常用也是支持者最多的客户端脚本语言.它可以收集用户的跟踪数据,不需要重载页面直接提交表单,在页面嵌入多媒体文件,甚至运行网页游戏. 我们可以在网页 ...
随机推荐
- Fiddler进行模拟POST、PUT提交数据注意点
1.请求头要加 Accept: application/xml Content-Type: application/json 2.地址栏url地址后不要忘记加“/” 3.POST和PUT的对象参数都是 ...
- 51Nod 1010 只包含因子2 3 5的数 | 预处理+二分
Input示例 5 1 8 13 35 77 Output示例 2 8 15 36 80 分析:将所有的只含有2 3 5因子的数打一个表保存在一个数组里,然后二分查找第一个>=数组里的数,输出 ...
- 启动hbase输出ignoring option PermSize=128m; support was removed in 8.0告警信息
./start-hbase.sh starting master, logging to /home/hadoop/hbase-1.2.4/bin/../logs/hbase-hadoop-maste ...
- 【Atcoder】CODE FESTIVAL 2017 qual A D - Four Coloring
[题意]给定h,w,d,要求构造矩阵h*w满足任意两个曼哈顿距离为d的点都不同色,染四色. [算法]结论+矩阵变换 [题解] 曼哈顿距离是一个立着的正方形,不方便处理.d=|xi-xj|+|yi-yj ...
- 【HDU】3068 最长回文
[算法]manacher [题解][算法]字符串 #include<cstdio> #include<algorithm> #include<cstring> us ...
- pandas中DataFrame使用
切片选择 #显示第一行数据print(df.head(1)) #显示倒数三行数据 print(df.tail(3)) loc df.loc[row_index,col_index] 注意loc是根 ...
- Join vs merge vs lookup
The obvious benefit of merge over join is the ability to add reject links. I can't upload pictures. ...
- 【Python项目】使用Face++的人脸识别detect API进行本地图片情绪识别并存入excel
准备工作 首先,需要在Face++的主页注册一个账号,在控制台去获取API Key和API Secret. 然后在本地文件夹准备好要进行情绪识别的图片/相片. 代码 介绍下所使用的第三方库 ——url ...
- 需要重刷整個 image 的時機 - 1
最近遇到一個問題, gpio 讀出來的值與預期不同, 詳細描述如下: 首先手機 download 了一個完整的 daily build image , 接下來 不斷地修改 kernel 部分 code ...
- linux和ubuntu防火墙相关命令
1.永久有效 开启: chkconfig iptables on 关闭: chkconfig iptables off 2.即刻生效 开启: service iptables start 关闭: se ...