python爬虫练习之requests+BeautifulSoup库,提取影片信息,并保存至excel

Posted the丶only

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python爬虫练习之requests+BeautifulSoup库,提取影片信息,并保存至excel相关的知识,希望对你有一定的参考价值。

简介

目标:使用requests+BeautifulSoup库,使用获取评分最高的250部影片,并保存到excel表格中。

requests库,参考文章:python爬虫之reuqests库
BeautifulSoup库,参考文章:python爬虫之Beautiful Soup库

一、创建excel表格

需要用到xlwt库,没安装的话,安装即可

pip install xlwt

创建空表格

#创建一个excel表格,定义编码为utf-8,默认为ASCII编码
excl=xlwt.Workbook(encoding='utf-8')
movie=excl.add_sheet('movie top 250')
movie.write(0,0,'排名')
movie.write(0,1,'名称')
movie.write(0,2,'导演演员')
movie.write(0,3,'评分')
movie.write(0,4,'链接')

二、创建请求函数

这里创建douban_re的函数,包括链接和headers,用于访问页面。

def douban_re(url):
    headers='User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (Khtml, like Gecko)Chrome/65.0.3325.162 Safari/537.36'
    re=requests.get(url=url,headers=headers)
    return re.text

三、提取数据并存入excel表格

同样创建一个函数,BeatifulSoup 解析数据,然后用循坏的方式依次追加内容到表中。
需要先分析页面信息

获取页面内容,具体可以参考文章:python爬虫之Beautiful Soup库

def write_excel(soup):
    list=soup.find(class_='grid_view').find_all('li')
    for item in list:
        item_num=item.find('em').string
        item_name=item.find(class_='title').string
        item_act=item.find('p').text.replace(' ','')
        item_sc=item.find(class_='rating_num').string
        item_link=item.find('a')['href']
        #print("排名:"+item_num,"\\n电影名称:"+item_name,item_act,item_sc,item_link)
        #获取内容循环追加到表中。
        global n
        movie.write(n,0,item_num)
        movie.write(n,1,item_name)
        movie.write(n,2,item_act)
        movie.write(n,3,item_sc)
        movie.write(n,4,item_link)
        n = n+1

四、循环多个页面的内容

分析网址信息:

#首页
https://movie.douban.com/top250?start=0&filter=
#第二页
https://movie.douban.com/top250?start=25&filter=
#第三页
https://movie.douban.com/top250?start=50&filter=

可以发现就start=25的数字不同,同样用循环的方式依次访问页面即可。

创建访问页面函数main,在后面调取循环的页面数即可。

def main(page):
    url='https://movie.douban.com/top250?start='+str(page*25)+'&filter='
    #url='https://movie.douban.com/top250'
    html=douban_re(url)
    soup=BeautifulSoup(html,'lxml')
    write_excel(soup)

if __name__=='__main__':
    for i in range(0,10):
        main(i)

五、完整代码

import requests
from bs4 import BeautifulSoup
import xlwt

excl=xlwt.Workbook(encoding='utf-8')
movie=excl.add_sheet('movie top 250')
movie.write(0,0,'排名')
movie.write(0,1,'名称')
movie.write(0,2,'导演演员')
movie.write(0,3,'评分')
movie.write(0,4,'链接')

n=1

def douban_re(url):
    headers='User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko)Chrome/65.0.3325.162 Safari/537.36'
    re=requests.get(url=url,headers=headers)
    return re.text

def write_excel(soup):
    list=soup.find(class_='grid_view').find_all('li')
    for item in list:
        item_num=item.find('em').string
        item_name=item.find(class_='title').string
        item_act=item.find('p').text.replace(' ','')
        item_sc=item.find(class_='rating_num').string
        item_link=item.find('a')['href']
        #print("排名:"+item_num,"\\n电影名称:"+item_name,item_act,item_sc,item_link)
        global n
        movie.write(n,0,item_num)
        movie.write(n,1,item_name)
        movie.write(n,2,item_act)
        movie.write(n,3,item_sc)
        movie.write(n,4,item_link)
        n = n+1

def main(page):
    url='https://movie.douban.com/top250?start='+str(page*25)+'&filter='
    #url='https://movie.douban.com/top250'
    html=douban_re(url)
    soup=BeautifulSoup(html,'lxml')
    write_excel(soup)

if __name__=='__main__':
    for i in range(0,10):
        main(i)

excl.save('movie_top_250.xls')

最后excl.save保存并命令即可。

注:xlwt只能创建保存为xls格式的表,不能保存xlsx格式的表格

执行结果,得到一个名称为movie_top_250.xls的表格,打开表格。

以上就完成了。

以上是关于python爬虫练习之requests+BeautifulSoup库,提取影片信息,并保存至excel的主要内容,如果未能解决你的问题,请参考以下文章

python爬虫练习之requests+BeautifulSoup库,提取影片信息,并保存至excel

网络爬虫练习之网络小说

python学习之爬虫:安装requests模块

python学习之爬虫一

Linux脚本练习之script084-nginx日志分析之统计爬虫抓取404的次数

Linux脚本练习之script084-nginx日志分析之统计爬虫抓取404的次数