一、准备工作

  1. 安装python。
  2. 安装jupyter库,按window+R,会弹出一个方框,输入cmd会弹出窗口,输入pip install jupyter,安装jupyter库。
  3. 安装好jupyter后,建一个文件夹,在文件夹路径那里输入cmd,会出现一个窗口了,再直接输入jupyter notebook,按回车,便可直接进入jupyter的网络编辑页面。
    如图:
    爬取豆瓣TOP250
    出现此界面后便会自动跳转到jupyter的网络编辑页面,如图:
    爬取豆瓣TOP250
    在此页面后,点击右上角的New,选择Python3,会新建一个网页编辑器。

二、开始分析网页

(1)URL链接分析网页

第一页:https://movie.douban.com/top250?start=0&filter=
第二页:https://movie.douban.com/top250?start=25&filter=
第三页:https://movie.douban.com/top250?start=50&filter=
第四页:https://movie.douban.com/top250?start=75&filter=
第五页:https://movie.douban.com/top250?start=100&filter=
以上为豆瓣电影top250的前五个网页链接,由上我们可以看出黄色标记出来的部分是它们的不同,并且是有规律的,0,、25、50、75、100,所以可以推出后五页的链接。
例如:第九页的链接为:https://movie.douban.com/top250?start=200&filter=

(2)用for循环分析

结果如下:
爬取豆瓣TOP250

(3)用函数表示出URL链接

爬取豆瓣TOP250
将start=0改为start=%s,后面的%page表示将page函数中的数值范围赋予给s,即可得出十个网页的链接。点击第五个链接,就到top250 中的第五页,与之前得到的链接相同。

三、爬取网页

(1)安装requests库

进行这步操作需要安装requests库,按window+R,会弹出一个方框,输入cmd会弹出窗口,输入pip install requests,安装requests库。
以请求第一页为例如图:
爬取豆瓣TOP250

(2)在网页上对代码进行审查

在空白处点击右键,进入检查,点击network,点击all,在对网页进行刷新,就会出现网页的组成,如图片、文字、文件等。
如图:爬取豆瓣TOP250

(3)请求源代码(HTML),向服务器发出请求

爬取豆瓣TOP250

(4)伪装浏览器

首先,将代码审查中的user-agent复制过来,将其构成一个字典。
如图:爬取豆瓣TOP250
如果在requests.get(url = test_url,headers=headers后面+,text,则有:
爬取豆瓣TOP250
如何快速查找用ctrl+f组合键,如在豆瓣top250第一页复制这段话:爬取豆瓣TOP250
回到编辑页面按ctrl+f组合键则有:
爬取豆瓣TOP250

四、筛选信息

主要工具有 xpath、beautifulsoup(bs4)、re(正则表达式)

(1)安装lxml库

按window+R,会弹出一个方框,输入cmd会弹出窗口,输入pip install lxml,安装lxml库。

(2)从top250提取信息

以提取肖申克的救赎为例:
首先在网页上找到肖申的救赎,选中右击,点击检查,可在代码中找到,如图:
爬取豆瓣TOP250
在网页代码中选中这一行右击,点击copy,点击copy xpath,然后将其粘贴在如图选中位置。
爬取豆瓣TOP250
再在span[1]后加/text(),按运行,得:
爬取豆瓣TOP250
上图的结果有[],如不需要可以+(0),如图:
爬取豆瓣TOP250

(3)复制整个网页的xpath路径

找到每个电影模块对应的序列代码,如图:
爬取豆瓣TOP250
将图中右侧鼠标选中的位置的xpath路径复制下来为:
第一个路径://[@id=“content”]/div/div[1]/ol/li[1]
第二个路径://
[@id=“content”]/div/div[1]/ol/li[2]
第三个路径://[@id=“content”]/div/div[1]/ol/li[3]
最后一个路径://
[@id=“content”]/div/div[1]/ol/li[25]
可以发现它们的不同在于后面[ ]里面的数字,且由1增加到25。
将语句后的[ ]删除,便可表示所有的xpath路径,如图:
爬取豆瓣TOP250
共有25个返回值,li为自己写的赋值,可用len()函数查看返回值的长度
如下图:
爬取豆瓣TOP250

(4)获取电影名称

25个路径里面,每个路径里面有10个电影的名字,共250个。我们需要从25个xpath路径里面获取得250个电影,然后再从这250个电影(item)的xpath路径里面获取250个电影名。
我们来比较一下xpath路径
爬取豆瓣TOP250
可以发现,li[ ]中的数字是它们的不同之处。
因此代码表示为:
爬取豆瓣TOP250
此处选中的点表示上面写的li后面括号里的所有路径,此处name后面写的是第一页的名字的共同特征,所以只输出第一页的所有电影名字,结果如下:
爬取豆瓣TOP250
可在代码后加[0],输出纯文字,结果如下:
爬取豆瓣TOP250

(5)获取电影链接

我们来比较一下电影链接xpath路径:
爬取豆瓣TOP250
可以发现,li[ ]中的数字是它们的不同之处。
代码表示:
爬取豆瓣TOP250
此处选中的点表示上面写的li后面括号里的所有路径,此处dy_url后面写的是第一页电影链接的共同特征,所以只输出第一页的所有电影链接,结果如下:
爬取豆瓣TOP250

(6)获取电影星级

我们来比较一下电影星级xpath路径:
爬取豆瓣TOP250
可以发现,li[ ]中的数字是它们的不同之处。
代码表示为:
爬取豆瓣TOP250
此处选中的点表示上面写的li后面括号里的所有路径,此处rating后面写的是第一页电影星级的共同特征,所以只输出第一页的所有电影星级,结果如下:
爬取豆瓣TOP250

(7)获取电影评分

我们来比较一下电影评分xpath路径:
爬取豆瓣TOP250
可以发现,li[ ]中的数字是它们的不同之处。
代码表示为:
爬取豆瓣TOP250
此点表示上面写的li后面括号里的所有路径,此处rating_num后面写的是第一页电影评分的共同特征,所以只输出第一页的所有电影评分,结果如下:
爬取豆瓣TOP250

(8)获取电影评价

方法同上
代码表示为:
爬取豆瓣TOP250
结果如下:
爬取豆瓣TOP250

(9)获取电影排名

方法同上
代码如下:
爬取豆瓣TOP250
结果如下:
爬取豆瓣TOP250

(10)综合输出

代码如下:
爬取豆瓣TOP250
结果如下:
爬取豆瓣TOP250

五、正则表达式

(1)正则表达式理解

代码如下:
爬取豆瓣TOP250
因为想要把一只兔替换了,所以将一只兔的位置改为(.*?)。
爬取豆瓣TOP250
只要保留离5最近的g和-,其余在rating5-t中的字母不论怎么变都能输出5。

(2)用专门提取数字的re来提取数字

代码如下:
爬取豆瓣TOP250
不是数字的用""代替。
双引号中不写替代内容时,替代内容可写可不写。

(3)把评价中的人数用re表示出来

代码如下:
爬取豆瓣TOP250
结果如下:
爬取豆瓣TOP250

(4)把星级提取出来

代码如下:
爬取豆瓣TOP250
结果如下:
爬取豆瓣TOP250
精化:
爬取豆瓣TOP250
结果如下:
爬取豆瓣TOP250
综合全部:
爬取豆瓣TOP250
结果为:
爬取豆瓣TOP250

六、保存到CSV

分三步:

  1. 打开文件
  2. 放进文件夹
  3. 关闭文件夹
    (1)创建文件夹并打开
    爬取豆瓣TOP250
    打开豆瓣250.csv这个文件,打开时有可能为乱码,可将文件夹删除重新写入,或将encoding='utf-8-sig’改为encoding=‘utf-8-sig’
    (2)将爬取内容写入
    代码:
    爬取豆瓣TOP250
    结果:
    爬取豆瓣TOP250
    (3)写入成功后
    爬取豆瓣TOP250

七、保存豆瓣top250到csv

代码为:
爬取豆瓣TOP250
爬取豆瓣TOP250
结果如下:
爬取豆瓣TOP250
此时,所有内容写入成功,打开CSV文件可看到:
爬取豆瓣TOP250
爬取豆瓣top250结束!

相关文章: