#!/usr/biin/env python
# -*-encoding:utf-8-*-
#Author:wangting
import re
from urllib.request import urlopen
def getPage(url):
response = urlopen(url)
return response.read().decode('utf-8')
def parsePage(s):
com = re.compile(
'.*?.*?(?P\d+).*?(?P.*?) '
'.*? .*?(?P.*?)评价 ',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)
print(ret)
f = open('douban_250',"a",encoding='utf-8')
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
执行后会输出至一个文档,有数据库可以写入数据库,然后做数据分析(注意正则和yield出根据喜好可以再自定义多个条件,如国家,年份等等)
效果如下
{'id': '1', 'title': '肖申克的救赎', 'rating_num': '9.6', 'comment_num': '1287251人'}
{'id': '2', 'title': '霸王别姬', 'rating_num': '9.6', 'comment_num': '950227人'}
{'id': '3', 'title': '这个杀手不太冷', 'rating_num': '9.4', 'comment_num': '1181187人'}
{'id': '4', 'title': '阿甘正传', 'rating_num': '9.4', 'comment_num': '1014706人'}
{'id': '5', 'title': '美丽人生', 'rating_num': '9.5', 'comment_num': '593890人'}
{'id': '6', 'title': '泰坦尼克号', 'rating_num': '9.3', 'comment_num': '950414人'}
{'id': '7', 'title': '千与千寻', 'rating_num': '9.3', 'comment_num': '943427人'}
{'id': '8', 'title': '辛德勒的名单', 'rating_num': '9.5', 'comment_num': '531597人'}
{'id': '9', 'title': '盗梦空间', 'rating_num': '9.3', 'comment_num': '1025978人'}
{'id': '10', 'title': '机器人总动员', 'rating_num': '9.3', 'comment_num': '682477人'}
{'id': '11', 'title': '忠犬八公的故事', 'rating_num': '9.3', 'comment_num': '670769人'}
{'id': '12', 'title': '三傻大闹宝莱坞', 'rating_num': '9.2', 'comment_num': '920418人'}
{'id': '13', 'title': '海上钢琴师', 'rating_num': '9.2', 'comment_num': '764855人'}
{'id': '14', 'title': '放牛班的春天', 'rating_num': '9.3', 'comment_num': '635106人'}
{'id': '15', 'title': '大话西游之大圣娶亲', 'rating_num': '9.2', 'comment_num': '706247人'}
{'id': '16', 'title': '楚门的世界', 'rating_num': '9.2', 'comment_num': '690260人'}
{'id': '17', 'title': '龙猫', 'rating_num': '9.2', 'comment_num': '622694人'}
{'id': '18', 'title': '星际穿越', 'rating_num': '9.2', 'comment_num': '701152人'}
{'id': '19', 'title': '教父', 'rating_num': '9.2', 'comment_num': '464591人'}
{'id': '20', 'title': '熔炉', 'rating_num': '9.3', 'comment_num': '402543人'}
{'id': '21', 'title': '无间道', 'rating_num': '9.1', 'comment_num': '580656人'}
{'id': '22', 'title': '当幸福来敲门', 'rating_num': '9.0', 'comment_num': '744307人'}
{'id': '23', 'title': '疯狂动物城', 'rating_num': '9.2', 'comment_num': '779965人'}
{'id': '24', 'title': '触不可及', 'rating_num': '9.2', 'comment_num': '491172人'}
{'id': '25', 'title': '怦然心动', 'rating_num': '9.0', 'comment_num': '809359人'}
{'id': '26', 'title': '乱世佳人', 'rating_num': '9.2', 'comment_num': '349243人'}
{'id': '27', 'title': '蝙蝠侠:黑暗骑士', 'rating_num': '9.1', 'comment_num': '468433人'}
{'id': '28', 'title': '活着', 'rating_num': '9.2', 'comment_num': '382390人'}
{'id': '29', 'title': '天堂电影院', 'rating_num': '9.1', 'comment_num': '380531人'}
{'id': '30', 'title': '少年派的奇幻漂流', 'rating_num': '9.0', 'comment_num': '754864人'}
.......