? ? 书山有路勤为径,学海无涯苦作舟!
? ? ? ? 人中苦短我用python,大家好今天给大家分享一下爬取豆瓣电影排行榜top250的最新教程,话不多说,直接上源码!我会在代码中做出详细解释!
? ? ? ? ?
import requests #引入请求模块
import re #正则
import csv #csv文件存储模块
import time #时间模块
#伪装请求头
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36"
}
#正则解析提取数据方法
obj = re.compile(r'<li>.*?<div class="item">.*?<span class="title">(?P<name>.*?)'
r'</span>.*?<p class="">.*?<br>(?P<year>.*?) .*?'
r'<span class="rating_num" property="v:average">(?P<score>.*</span>'
r'.*?<span>(?P<num>.*?)人评价</span>', re.S)
start = 0 #时间请求自动换页
f = open("data.csv", mode='w') #创建打开csv文件
csvwriter = csv.writer(f) #向文件中写入数据方法
s = 1
proxy = {
"https": "175.7.199.68:3256" #代理设置可用可不用
}
while True:
url = f'https://movie.douban.com/top250?start={start}' #url请求地址,start是用来自动换页的
resp = requests.get(url, headers=headers, proxies=proxy) #模拟浏览器请求页面
page_content = resp.text
result = obj.finditer(page_content) #正则解析过滤数据
for i in result: #循环把数据封装成字典
dic = i.groupdict()
dic['year'] = dic['year'].strip()
csvwriter.writerow(dic.values()) #向文件中写入数据
print(i.group('name'))
print('第{}页已完成....'.format(s))
s += 1
time.sleep(1) #睡眠一秒避免请求速度过快
start += 25 #换页方法
if start > 225: #最后一页跳出循环
break
f.close() #关闭读写文件
resp.close() #相当于关闭模拟浏览器窗口
print('程序完成自动退出!!!!')
?获取到的数据如下图所示(截取部分):
?
?好了一个简单的爬虫小程序就完成了,大家可以尝试一下,也可以给初学者一个参考!再见!
?
?
|