1、寻找url规律
- https://movie.douban.com/top250
- https://movie.douban.com/top250?start=25&filter=
- https://movie.douban.com/top250?start=50&filter=
我们发现电影排行榜的url地址只有start参数发生改变而且都是25的倍数,而第一页并没有start参数,尝试加上start=0参数并去掉filer参数
import requests
headers = {
"user-agent":
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36"
}
for i in range(0, 10):
url = f"https://movie.douban.com/top250?start={i * 25}"
response = requests.get(url=url, headers=headers)
time.sleep(0.5)
print(response)
2、获取电影url
- 打开检查工具选取电影跳转标签,使用xpath路径表达式获取电影的url
- 使用xpath解析进行获取
urls = []
for i in range(0, 10):
# print(f"第{i + 1}页的url")
url = f"https://movie.douban.com/top250?start={i * 25}"
response = requests.get(url=url, headers=headers)
res = response.content.decode("utf8")
selector = parsel.Selector(res)
url_ = selector.xpath("//div[@class='hd']/a/@href").getall() # 获取top250电影url地址
for j in url_:
urls.append(j)
print(urls)
3、访问获取的电影url地址
- 解析评论者内容的url
- 解析电影名称
4、访问评论内容的url地址
评论内容的xpath路径可能不同,要多查看几个,避免偶然情况的发生
- 评论内容在p标签下
- 评论内容使用br换行
5、拼接
获取的内容可能会含有换行符,空格等,我们需要处理拼接之后的内容
comm_homes = selector.xpath(
"//*[@class='review-content clearfix']/p/text()|"
"//*[@class='review-content clearfix']/br/following-sibling::text()[1]|"
"//div[@class='review-content clearfix']//text()").getall() # 获取评论内容
# print(comm_homes)
comm_home_text = "".join(comm_homes) # 将文章内容拼接在一起
comm_home_text = comm_home_text.replace("</p>", "").replace("\xa0", "").replace("\n", "")
comm_home_text = comm_home_text.strip()
6、整合代码尝试运行
由于评论过多所以我只保存了第一个电影的前五条评论,可根据需要自行修改获取数量