使用Xpath爬取豆瓣电影的相关操作

1、安装lxml库(解析库)
windows:pip install lxml
linux:pip install lxml
在这里插入图片描述安装成功是这样的。

2、想要获取“豆瓣电影250”这个标题,同时想要爬取这个网页的每个电影的名称以及它的评分和评价人数,并将所有的单个数据列入一个大的列表中。
在这里插入图片描述

from lxml import etree
import requests
import re
html=requests.get("https://movie.douban.com/top250").text
selector=etree.HTML(html)
#获取文档的标题“豆瓣电影250”
title=selector.xpath("/html/head/title/text()")[0].strip("\n")
#name=selector.xpath("//div[@class="hd"]/a/span[1]/text()")
#设置一个所有的电影列表
Allmovieslist=[]
Lis=selector.xpath('//ol[@class="grid_view"]/li')
for oneselector in lis:
	name=oneselector.xpath("div/div[2]/div[@class="hd"]/a/span[1]/text()")[0]
	star=oneselector.xpath("div/div[2]/div[@class="bd"]/div/span[2]/text()")[0]
	num=oneselector.xpath("div/div[2]/div[@class="bd"]/div/span[4]/text()")[0]
	num=re.findall("(.*?)人评价",num)[0]
	onemovielist=[name,star,num]  #设置小的电影列表,将一个电影的评分,名称以及评价人数放在一个小列表中,在将网页中的所有电影都爬取放入一个大的列表中,方便查看
	Allmovieslist=Allmovieslist.append(onemovielist)
print(Allmovieslist)

这样的操作虽然可以爬取数据,但是很容易被封ID,为了解决这个问题,下面我们采取这样的方式爬取。
找到network->doc->top250->useragent(复制后面的值)

from lxml import etree
import requests
import re
#设置一个字典myheaders
myheaders={"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.3 "}
url="https://movie.douban.com/top250"
#爬取数据只需要知道第二页第三页的网址即可,把网址存入url中
flag=True
Allmovieslist=[]
while flag:
	html=requests.get("https://movie.douban.com/top250").text
	selector=etree.HTML(html)
	Lis=selector.xpath('//ol[@class="grid_view"]/li')
	for oneselector in Lis:
		name=oneselector.xpath("div/div[2]/div[@class='hd']/a/span[1]/text()")[0]
		star=oneselector.xpath("div/div[2]/div[@class='bd']/div/span[2]/text()")[0]
		num=oneselector.xpath("div/div[2]/div[@class='bd']/div/span[4]/text()")[0]
		num=re.findall("(.*?)人评价",num)[0]
		onemovielist=[name,star,num]  #设置小的电影列表,将一个电影的评分,名称以及评价人数放在一个小列表中,在将网页中的所有电影都爬取放入一个大的列表中,方便查看
		Allmovieslist=Allmovieslist.append(onemovielist)
 		try:
 			next_url=selector.xpath("//span[@class='next']/a/@herf")[0]
 			if next_url:#防止爬取到网页的最后一页发生报错
 				url="https://movie.douban.com/top250"+next_url
 		expect:
 			flag=False
 print(Allmovieslist)

小可爱们快去亲手试试吧!!,感受一下爬虫的魅力吧,本来准备写BeautifulSoupy以及多线程爬虫的代码的,但是我不怎么用,害怕会误导大家!最近的任务就是上网课学机器学习+数据库+用python写网络爬虫的第三章啦!!1
大家要加油啊啊啊啊!!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱吃香菜的斌斌

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值