豆瓣爬虫250,
爬取数量可以通过对url参数得改变获得
爬取种类可以通过对正则表达式得改变来获得
实现代码如下:
import re
import requests
import csv
#由于每页只有25个,需要爬取多个页面,所以需要对url的参数做改写;
list=[]
for i in range(10):
list.append(i*25)
#对被爬取的10页数据做循环:
for j in list:
#在展示不同页面的时候url会做出改变,根据参数的变化规律改写;
url=f"https://movie.douban.com/top250?start={j}&filter="
#headers在network中随机一个页面中取得,作为自动化程序获得网页数据的伪装;
headers={
"user-agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36"
}
res=requests.get(url,headers=headers)
#获取网页源代码并展示
# print(res.text)
content=res.text
#构造正则表达式,.*?代表一切,可以代表被忽略掉的东西,
正则表达式也可以直接复制文本,然后对要匹配的位置进行改写。
obj=re.compile(r'<li>.*?<div class="item">.*?<span class="title">(?P<name>.*?)'
r'</span>.*?<br>(?P<year>.*?) '
r'.*?<span class="rating_num" property="v:average">(?P<score>.*?)</span>',re.S)
result=obj.finditer(content)
#可以将输出写入csv文件中
# f=open("data.csv",mode="w",encoding="utf-8")
# csvwriter=csv.writer(f)
for i in result:
print(i.group("name"))
#格式化输出,去掉空格;
print(i.group("year").strip())
print(i.group("score"))
# dic=i.groupdict()
# dic['year']=dic['year'].strip()
# csvwriter.writerow(dic.values())