1.打开想要抓取的网页
2.查看接口(url)的调用顺序
3.查看数据的数据结构(要想的数据在HTML中的位置)
import requests #发送http请求的包
from bs4 import BeautifulSoup #这个包可以通过解析文档为用户提供需要抓取的数据
start=0 #url中有start 是从0开始
result=[]
header={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36'
}
for i in range(0,1); #写成0,1 是为了方便测试,调成无误后可调整参数大小
html = requests.get('https://movie.douban.com/top250?start='+str(start)+'&filter=',headers=header) #第一个参数就是网站的地址,其中start的值不可以固定,要用一个变量替换。第二个参数写入该网站的请求头中的User-Agent参数。
print(html.text)
html.encoding='utf-8' #因为返回的是中文,所以返回的编码格式是utf-8
start+=25 //每次自增25,一共是250
soup=BeautifulSoup(html.text,'html.parser') #用Beautiful处理上面requests.get处理之后的返回值
for item in soup.find_all('div','info'): # 每一个电影都是在div块中的info class里面
title=item.div.a.span.string #要取到的是title类里面的电影名
print(title)
yearline=item.find('div','bd').p.contents[2].string #P标签中第二行的string,但是第二行还有其他数据,需要做处理、
yearline=yearline.replace('\n','') #将回车替换去掉
yearline=yearline.replace(' ','')
year=yearline[0:4]
rating = item.find('span', {'class': 'rating_num'}).get_text()
# print(title + ' ' + year + ' ' + rating)
oneresult = [title, rating, year]
result.append(oneresult)
print(result)
import unicodecsv as csv
with open('test.csv', 'wb') as f:
w = csv.writer(f)
w.writerows(result)
请自行调整缩进格式以免报错
本文参考B站up主:python日记