python使用re模块实现爬取豆瓣Top250电影?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
爬蟲四步原理:
1.发送请求:requests
2.获取相应数据:对方及其直接返回
3.解析并提取想要的数据:re
4.保存提取后的数据:with open()文件处理
爬蟲三步曲:
1.发送请求
2.解析数据
3.保存数据
注意:豆瓣网页爬虫必须使用请求头,否则服务器不予返回数据
import re
import requests
# 爬蟲三部曲:
# 1.获取请求
def get_data(url, headers):
response = requests.get(url, headers=headers)
# 如果爬取的是html文本就是用.text方法获取文本数据,如果爬取的是音视频就用.content方法获取二进制流数据
# print(response.text) # 获取相应文本,比如html代码
return response.text
# 2.解析数据
def parser_data(text):
# re.findall("正则表达式", "过滤的文本", re.S) # 匹配模式:re.S 全局模式
data = re.findall(
'<div class="item">.*?<a href="(.*?)" rel="external nofollow" >.*?<span class="title">(.*?)</span>.*?<span class="rating_num" property="v:average">(.*?)</span>.*?<span>(.*?)人评价</span>', text, re.S)
for move_info in data:
yield move_info
# 3.保存数据
def save_data(res_list_iter):
with open("豆瓣TOP250.txt", "a", encoding="utf-8") as f:
for i in res_list_iter:
move_page, move_title, move_score, move_evaluation = i
# print(move_page, move_title, move_score, move_evaluation)
str1 = f"电影名字:《{move_title}》 电影评分:{move_score} 电影评价:{move_evaluation} 电影详情页:{move_page}\n"
f.write(str1)
# 使用请求头请求数据
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 \
Safari/537.36'
}
n = 0
# 获取10个链接
for i in range(10):
url = f"https://movie.douban.com/top250?start={n}&filter=="
n += 25
text = get_data(url, headers)
res_list_iter = parser_data(text)
save_data(res_list_iter)
执行结果:
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。