Python|简单爬取豆瓣网电影信息

欢迎点击「算法与编程之美」↑关注我们!

本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。

欢迎加入团队圈子!与作者面对面!直接点击!

前言:

在掌握一些基础的爬虫知识后,就可以尝试做一些简单的爬虫来练一练手。今天要做的是利用xpath库来进行简单的数据的爬取。我们爬取的目标是电影的名字、导演和演员的信息、评分和url地址。

准备环境:Pycharm、python3、爬虫库request、xpath模块、lxml模块

第一步:分析url ,理清思路

先搜索豆瓣电影top250,打开网站可以发现要爬取的数据不止存在单独的一页,而是存在十页当中,这时应该怎么做呢?

首先观察:

第一页的

url:https://movie.douban.com/top250?start=0&filter=

第二页的

url:https://movie.douban.com/top250?start=25&filter=

第三页的

url:https://movie.douban.com/top250?start=50&filter=

可以得出一个结论每页的url是有规律的,start后面的数字等于页数减一乘以五。这样就可以用一个循环来爬取。

图1.1

再来就是通常的头部信息,第一步如下图所示:

图1.2

第二步:发送请求,利用xpath处理数据

Xpath可以通过节点来快速获取需要的信息,并把它提取出来。先打开浏览器的开发者工具。发现所有的电影数据都存放在div[@class="info"]的标签里,通过一级一级的获取,就可以得到想要的信息。可以直接来利用开发者工具的copy,来copy xpath的路径,但一般不推荐,因为很可能出错。

图2.1

如图所示:

图2.2

第三步:保存数据

我们可以用csv来保存数据

图3.1

代码如下:

import requests
 import lxml.html
 import csv
 etree = lxml.html.etree
 temp = r'C:\Users\86177\Desktop'+'\\'+'doubanmovie'
 with open(temp + '.csv', 'w') as f:
     csvwriter = csv.writer(f, dialect='excel')
     csvwriter.writerow(['title','info','average','link'])
 header ={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)  AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.7 Safari/537.36'}
 for n in range(11):
     url = 'https://movie.douban.com/top250?start=%s&filter='.format((n-1)*5)
     response = requests.get(url,headers=header)
     response.encoding = "utf-8"
     html1 = etree.HTML(response.text)
     h = html1.xpath('//div[@class="info"]')
     for sech in h:
         i = sech
         title = i.xpath('div[@class="hd"]/a/span[@class="title"]/text()')
         othertitle = i.xpath('div[@class="hd"]/a/span[@class="other"]/text()')
         info = i.xpath('div[@class="bd"]/p/text()')
         average = i.xpath('div[@class="bd"]/div[@class="star"]/span[@class="rating_num"]/text()')
         link = i.xpath('div[@class="hd"]/a/@href')
 
         for a, b, c, d in zip(title,  info, average, link):
             print(a, b, c, d)
 
             with open(temp + '.csv', 'w')  as f:
                 csvwriter =  csv.writer(f, dialect='excel')
                 csvwriter.writerow([a,  b, c, d])

总结:

这次爬取豆瓣的反爬虫机制较少,很适合一些学习爬虫知识的小白来练一练手。提高爬虫实战的能力。

END

编  辑   |   王楠岚

责  编   |   王   曦

 where2go 团队


   

微信号:算法与编程之美          

长按识别二维码关注我们!

温馨提示:点击页面右下角“写留言”发表评论,期待您的参与!期待您的转发!

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

算法与编程之美

欢迎关注『算法与编程之美』

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值