爬虫-爬取豆瓣top250
1.思路
2.步骤
判断出是get类型
获取页面源代码
加上反扒验证
乱码的话加上utf-8
想办法先拿一个数据
#re.S可以让正则中的.匹配换行符
obj = re.compile(r'<div class="item">.*?<span class="title">(?P<name>.*?)</span>', re.S)#进行正则匹配
result = obj.finditer(pageSource)for item in result:print(item.group("name"))#拿结果
<br>回车 空格,需要括起来,不需要.*?
.strip()去掉字符串左右空白
import re# 修正后的正则表达式
obj = re.compile(r'<div class="item">.*?<span class="title">(?P<name>.*?)</span>' # 修正class引号问题r'.*?<p class="">.*?导演:(?P<dao>.*?) ' # 移除多余的r'连接符r'.*?<br>(?P<year>.*?) ' # 修正 |*? 为 .*?r'.*?<span class="rating_num" property="v:average">',re.S
)# 进行正则匹配
result = obj.finditer(pageSource)for item in result:# 打印格式化结果print(f"电影名称:{item.group('name').strip()}")print(f"导演信息:{item.group('dao').strip()}")print(f"上映年份:{item.group('year').strip()}")print("-" * 30) # 分隔线
3.附上代码
import re
import requests
url = "https://movie.douban.com/top250"
headers ={'User-Agent':"Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko)Chrome/116.0.5845.97 Safari/537.36Core/1.116.537.400 QQBrowser/19.4.6561.400"}rep = requests.get(url,headers=headers)
pageSource = rep.text
# print(pageSource)
# 修正后的正则表达式
obj = re.compile(r'<div class="item">.*?<span class="title">(?P<name>.*?)</span>'r'.*?<p>.*?导演: (?P<dao>.*?) 'r'.*?<br>(?P<year>.*?) 'r'.*?<span class="rating_num" property="v:average">',re.S
)# 进行正则匹配
result = obj.finditer(pageSource)for item in result:# print(item)# 打印格式化结果print(f"电影名称:{item.group('name').strip()}")print(f"导演信息:{item.group('dao').strip()}")print(f"上映年份:{item.group('year').strip()}")print("-" * 30) # 分隔线rep.close()