爬虫思路——Xpath(douban movie 250)

需求:

豆瓣top250电影:https://movie.douban.com/top250

爬取 电影的名字 评分 引言 详情页的url 1-10页 保存到csv文件当中 (下图绿色框内容为所需爬去内容)


总体思路把握:

思路分析1a


思路分析上接1a

需求拆解:

需要爬去1-10页(共计250部电影信息)

存在遍历每一页获得每一页数据的需求


爬取 电影的名字 评分 引言 详情页的url

最后我们要得到的是250部电影,每部电影包含的信息是Name, Score, Quote, Links

可以认为每一部电影信息就是一个字典:{‘Name’ : '...', 'Score': '...', 'Quote': '...', ‘Links’: '...'}

以字典Key-Value  形式表示。

而所有电影信息可以是列表嵌套字典的格式,如下:

[{电影1字典}, {电影2字典},.....,{电影250字典}]


保存到CSV文件中

因为每部电影信息是以字典形式存储信息的。

因此可以使用csv.Dictwriter(object, titile) 方法直接写入字典信息


需求拆解总结:

每部电影信息都是一个字典,每一个html页面有25部电影 --> 第一层遍历后获取每一页25部电影的列表: [{该页第1部电影信息}, {该页第2部电影信息}, ... , {该页第25部电影信息}]

然后将这一页的结果列表加入到总体结果列表,然后遍历下一页面 --> 第二层遍历获取总共10页所有信息


分析1-10页URL地址规律

对于目标URL进行分析:

第一页:https://movie.douban.com/top250

第二页: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=0&filter=

发现第一页也是适用的,那么很容易总结出规律,每一页25部电影,以start = PageNum * 25 作为偏移量,修改URL地址即可

可以使用如下代码进行遍历url:

base_url = 'https://movie.douban.com/top250?start={}&filter='

for i in range(10):

    req_url = base_url .format ( i * 25)


分析页面

鼠标右键-->检查,找到所需爬去内容在element中的位置,class='info'

在网页源代码中寻宅此标签,并确认所有需要爬去的内容是否在其中:

每一个网页,25部电影信息,分别在25个 li标签内:而我们定义的<div class="info"> 存在于每一个 li 子标签下

分级如下:li --> <div class="item"> --> <div class="info">    (相同颜色箭头为同一级兄弟标签关系,平级)

获取网页源代码

使用requests模块请求,并获取html网页源代码并转换成字符串格式

匹配最小父级标签


匹配并列子级标签 & 定义子级标签内解析公式(xpath)&遍历子级获取需求数据 (黄色框选内容)


遍历每一页网页(1-10页)


保存数据至文档


完整代码如下:


执行结果:


用excel打开:

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容