基于python3.6—pycharm编写的,都已经调试过了,欢迎大家提出交流意见。
关于一些基础的数据网页分析(比如为什么是这个url)没有过多赘述,看不懂的自行百度。
源码可以直接拷贝运行。
转载请注明来源。
import re
import requests
'''
Python抓取豆瓣爱情电影排行Top200
1、payload构建url
2、get方式打开url
3、re.findall正则表达式提取数据
'''
def main():
url = "https://movie.douban.com/j/chart/top_list?type=13&interval_id=100%3A90"
headers = {
'Host':'movie.douban.com',
'Referer':'https://movie.douban.com/',
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
} #模拟浏览器访问,防止服务器封IP
payload = {'action':'','start':'0','limit':'20'} #构建url传递字典
file = open('douban.txt', 'w', encoding='utf-8') #打开写入文件
for k in range(0,10):
payload['start'] = k * 20 #构建url变量
resp = requests.get(url,params=payload,headers=headers) #生成url并回传结果
resp.encoding = 'utf-8' #设置编码
#正则表达式生成电影信息
Name = re.findall(r'"title":"([^"]+)"', resp.text, re.I) #电影名字
Score = re.findall(r'"score":"([^"]+)"', resp.text, re.I) #电影评分
Date = re.findall(r'release_date":"([^"]+)"', resp.text, re.I) #上映日期
Rank = re.findall(r'rank":([^"]+)', resp.text, re.I) #豆瓣排名
x = len(Name) # 每一页包含电影的数量
for i in range(0, x): # 把列表的数据保存到文件中
file.write('豆瓣排名:' + Rank[i].strip(',') + '\n' + '名称:' + Name[i] + '\n' + '上映时间:' + Date[i] + '\n' + '评分:' + Score[i] + '\n' + '\n\n')
print("正在加载第", k*20+i+1, "部")
file.close()
if __name__ == '__main__':
main()