正则表达式Python案例(2)-爬取豆瓣电影Top250
2020-03-07 本文已影响0人
复苏的兵马俑
通过Python代码实现爬取豆瓣电影Top250的电影列表,包括序号、电影名称、评分以及评论人数,并保存到文件中。
Python代码如下:
import re
import requests
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.9 Safari/537.36'}
def getPage(url):
response = requests.get(url,headers=headers)
return response.text
def parsePage(s):
com = re.compile(
'<div class="item">.*?<div class="pic">.*?<em .*?>(?P<id>\d+).*?<span class="title">(?P<title>.*?)</span>'
'.*?<span class="rating_num" .*?>(?P<rating_num>.*?)</span>.*?<span>(?P<comment_num>.*?)评价</span>', re.S)
ret = com.finditer(s)
for i in ret:
yield {
"id": i.group("id"),
"title": i.group("title"),
"rating_num": i.group("rating_num"),
"comment_num": i.group("comment_num"),
}
def main(num):
url = 'https://movie.douban.com/top250?start=%s&filter=' % num
response_html = getPage(url)
ret = parsePage(response_html)
f = open("move_info7", "a", encoding="utf8")
for obj in ret:
print(obj)
data = str(obj)
f.write(data + "\n")
f.close()
count = 0
for i in range(10):
main(count)
count += 25
执行结果:
{'id': '1', 'title': '肖申克的救赎', 'rating_num': '9.7', 'comment_num': '1903319人'}
{'id': '2', 'title': '霸王别姬', 'rating_num': '9.6', 'comment_num': '1399407人'}
{'id': '3', 'title': '阿甘正传', 'rating_num': '9.5', 'comment_num': '1447871人'}
{'id': '4', 'title': '这个杀手不太冷', 'rating_num': '9.4', 'comment_num': '1643765人'}
{'id': '5', 'title': '美丽人生', 'rating_num': '9.5', 'comment_num': '919515人'}
{'id': '6', 'title': '泰坦尼克号', 'rating_num': '9.4', 'comment_num': '1393040人'}
{'id': '7', 'title': '千与千寻', 'rating_num': '9.3', 'comment_num': '1487855人'}
{'id': '8', 'title': '辛德勒的名单', 'rating_num': '9.5', 'comment_num': '740992人'}
{'id': '9', 'title': '盗梦空间', 'rating_num': '9.3', 'comment_num': '1397503人'}
{'id': '10', 'title': '忠犬八公的故事', 'rating_num': '9.4', 'comment_num': '959748人'}
……此处省略……
{'id': '241', 'title': '黑鹰坠落', 'rating_num': '8.7', 'comment_num': '198432人'}
{'id': '242', 'title': '我爱你', 'rating_num': '9.0', 'comment_num': '101768人'}
{'id': '243', 'title': '发条橙', 'rating_num': '8.5', 'comment_num': '269492人'}
{'id': '244', 'title': '千钧一发', 'rating_num': '8.8', 'comment_num': '159943人'}
{'id': '245', 'title': 'E.T. 外星人', 'rating_num': '8.6', 'comment_num': '244865人'}
{'id': '246', 'title': '撞车', 'rating_num': '8.6', 'comment_num': '241912人'}
{'id': '247', 'title': '网络谜踪', 'rating_num': '8.6', 'comment_num': '358369人'}
{'id': '248', 'title': '四个春天', 'rating_num': '8.9', 'comment_num': '109435人'}
{'id': '249', 'title': '梦之安魂曲', 'rating_num': '8.7', 'comment_num': '158601人'}
{'id': '250', 'title': '变脸', 'rating_num': '8.5', 'comment_num': '306623人'}