爬虫第二篇--豆瓣电影(Python)

爬虫第二篇–豆瓣电影
上一篇写了关于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,
爬虫第二篇--豆瓣电影(Python)
2、获取cookies、headers
爬虫第二篇--豆瓣电影(Python)
3、解析及查找你要的数据对应的html标签,我要的数据在

当中

    #使用beautifulSoup()中‘lxml’解析html
    soup = BeautifulSoup(res.text,"lxml")
    #查找数据对应的标签
div_list = soup.find_all('div', class_ = 'hd')
#使用
div_list[i].a.span.text获取对应的数据

爬虫第二篇--豆瓣电影(Python)
对应的其他你要的包含在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')

爬取结果如图:
爬虫第二篇--豆瓣电影(Python)
数据清洗成你要的格式:
爬虫第二篇--豆瓣电影(Python)