这里获取电影名称的时候有点复杂了,使用正则的话可能会相对简单一些
import requests
from lxml import etree
url = "https://movie.douban.com/chart"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36"
}
response = requests.get(url, headers=headers)
html_str = response.text
# print(html_str)
# 拿到html_str后就可以使用etree.HTML()方法获取html对象,之后就可以使用xpath方法了
html = etree.HTML(html_str) # <Element html at 0x7ff3fe0d6108>
# ①获取所有电影的url地址 (直接定位到标签)
url_list = html.xpath("//div[@class='pl2']/a/@href")
# ②获取所有电影图片的地址 (直接定位到标签)
image_list = html.xpath("//a[@class='nbg']/img/@src")
# ③获取每部电影的名称,电影url,图片url,评论数,评分等
# 思路:经过分析html发现,其实每一部电影都是存在于一个table标签中的,那么可以先按照table分组,然后从每个table分组中提取想要的数据
# 1-- 以每个电影分组
table_obj = html.xpath("//div[@class='indent']/div/table")
# 2-- 从html内容知道,电影名称分为两部分,先构造电影名字
name1_list = []
name2_list = []
for table in table_obj:
for name1 in table.xpath(".//div[@class='pl2']/a/text()"

本文通过Python和lxml库解析豆瓣电影榜单页面,提取电影名称、URL、图片URL、评论数及评分等信息,展示了如何使用XPath定位和抓取网页数据。
最低0.47元/天 解锁文章
1407

被折叠的 条评论
为什么被折叠?



