通过上面的了解,我们简单的对一个豆瓣的TOP250榜单进行爬取:
import re
import requests
import csv
# 豆瓣top250地址:https://movie.douban.com/top250
# 1.确定我们需要的数据保存在什么地方
# 我们可以通过查看页面源代码搜索我们所需要的数据:
# 2.创建url:
url = "https://movie.douban.com/top250"
# 3.封装参数
param = {
"type": "24",
"interval_id": "100:90",
"action": "",
"start": 25,
"limit": ""
}
# 4.爬虫不好使,添加UA
# 默认UA:
ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 " \
"Safari/537.36 "
headers = {
"User-Agent": ua
}
# 会重新处理URL,param会拼接
resp = requests.get(url=url, params=param, headers=headers)
# 5.拿到页面源代码
page_content = resp.text
# 关掉response,次数过多容易报错
resp.close()
# 用re解析数据
# 6.通过正则拿到名字,评分,评价,电影年份
obj = re.compile(r'<li>.*?<div class="item">.*?<span class="title">(?P<name>.*?)'
r'</span>.*?<p class="">.*?<br>(?P<year>.*?) .*?'
r'<span class="rating_num" property="v:average">(?P<score>.*?)</span>.*?'
r'<span>(?P<human>.*?)</span>', re.S)
# 拿到结果
result = obj.finditer(page_content)
# 存入CSV文件:
f = open("data.csv", mode="w")
csvwriter = csv.writer(f)
for it in result:
# print(it.group("name"))
# print(it.group("year").strip()) # 年份处理一下
# print(it.group("score"))
# print(it.group("human"))
# 字典格式整理
dic = it.groupdict()
# 处理年份
dic['year'] = dic['year'].strip()
# 写入文件
csvwriter.writerow(dic.values())
# 关闭文件流
f.close()
print("over")
我们可以通过修改param 中的 start 值来实现分页。
&spm=1001.2101.3001.5002&articleId=122623127&d=1&t=3&u=c2dba38687834c2699d8ec507a33e766)

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



