爬虫第二篇–豆瓣电影
上一篇写了关于requests爬虫的应用,但转换的格式为json格式的,那如果我要的数据在html代码当中呢?该如何提取?本文将提供一个思路(注:可能并非最好的方案)!
1、还是获取网站的url、headers、cookies
2、服务器返回响应
3、使用BeautifulSoup解析(数据包含在html)
4、保存本地.xls格式
具体过程:
1、观察url,
第一页url=‘https://movie.douban.com/top250?start=0&filter=’
第二页url=‘https://movie.douban.com/top250?start=25&filter=’
我们发现在‘start=’参数中,每翻一页加25,
2、获取cookies、headers
3、解析及查找你要的数据对应的html标签,我要的数据在
当中
#使用beautifulSoup()中‘lxml’解析html
soup = BeautifulSoup(res.text,"lxml")
#查找数据对应的标签
div_list = soup.find_all('div', class_ = 'hd')
#使用
div_list[i].a.span.text获取对应的数据
对应的其他你要的包含在html的数据以此类推
4、本文当中使用了先建立列表,使用.append把数据逐条逐条写入列表
for i in range(len(div_list)):
movie=div_list[i].a.span.text
movie_list4.append(movie)
5、存入本地,xls格式,数据爬取完成
以下为代码部分:
import requests
import xlwt
from bs4 import BeautifulSoup#用于解析html
movie_list4 = []
conet_list4 = []
star_list4 = []
file = xlwt.Workbook()
table = file.add_sheet('sheet name')
doc=['movie','conet','star']
for h in range(len(doc)):
table.write(0,h,doc[h])
page=1
k=0
while page<=10:
#requests.get()发出请求
url='https://movie.douban.com/top250?start='+str(k)+'&filter='
headers = {
'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36',
'Host':'movie.douban.com'
}
res = requests.get(url,headers=headers)
#使用beautifulSoup()中‘lxml’解析html
soup = BeautifulSoup(res.text,"lxml")
#查找数据对应的标签
div_list = soup.find_all('div', class_ = 'hd')
div1_list = soup.find_all('div', class_='bd')
div2_list = soup.find_all('div', class_='star')
#遍历标签查找数据
for i in range(len(div_list)):
movie=div_list[i].a.span.text
movie_list4.append(movie)
for j in range(25):
conet=div1_list[j+1].p.text
conet_list4.append(conet)
for g in range(len(div2_list)):
star=div2_list[g].text
star_list4.append(star)
print('第'+str(page)+'页完成')
k=k+25
page=page+1
#数据存入本地,格式为xls
for ii in range(len(movie_list4)):
table.write(ii+1,0,movie_list4[ii])
for jj in range(len(conet_list4)):
table.write(jj+1,1,conet_list4[jj])
for gg in range(len(star_list4)):
table.write(gg+1,2,star_list4[gg])
file.save(r'd:/data.xls')
print('ok')
爬取结果如图:
数据清洗成你要的格式: