网站首页 > 博客文章 正文
简介
目标:使用 BeautifulSoup + Reuqests,爬取豆瓣上评分最高的250部电影,并保存到excel表格中。
requests库,参考前面文章:python爬虫之reuqests库
BeautifulSoup库,参考前面文章:python爬虫之Beautiful Soup库
一、创建xls表格
需要用到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的表格,打开表格。
猜你喜欢
- 2024-12-18 轻松解析数据!你不可不知的Python宝藏库——parser模块
- 2024-12-18 基于Google Gemini的网页抓取 谷歌怎么抓取网页里的图片
- 2024-12-18 使用Python抓取欧洲足球联赛数据 python 竞彩
- 2024-12-18 网络爬虫——从网站中提取有用的数据
- 2024-12-18 网上售卖几百一月的微信机器,Python几十行代码就能搞定
- 2024-12-18 一个Python编写的小说下载器 用python写小说
- 2024-12-18 LangChainV0.2-进阶教程:构建一个RAG应用
- 2024-12-18 Python应用短文,如何自制一个简易的网络爬虫
- 2024-12-18 机器学习第五发:BS教你如何解析网页,规整数据?
- 2024-12-18 python3的bs4模块的安装、介绍 python中bs4模块
你 发表评论:
欢迎- 367℃用AI Agent治理微服务的复杂性问题|QCon
- 360℃手把手教程「JavaWeb」优雅的SpringMvc+Mybatis整合之路
- 358℃初次使用IntelliJ IDEA新建Maven项目
- 351℃Maven技术方案最全手册(mavena)
- 348℃安利Touch Bar 专属应用,让闲置的Touch Bar活跃起来!
- 346℃InfoQ 2024 年趋势报告:架构篇(infoq+2024+年趋势报告:架构篇分析)
- 345℃IntelliJ IDEA 2018版本和2022版本创建 Maven 项目对比
- 342℃从头搭建 IntelliJ IDEA 环境(intellij idea建包)
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)