Python爬取豆瓣Top250电影可见资料并保存为excel形式
Python爬取豆瓣Top250电影可见资料并保存为excel形式
利用requests第三方库实现网页的元素爬取,再使用openpyxl库进行信息的录入。
具体思路
1.分析网页的headers。
2.分析网页的js。
3.模拟用户代理进入网页,get请求浏览。
4.提取网页的Xpath在python中利用循环遍历将获取资料录入列表。
5.使用openpyxl库,循环遍历列表录入信息。
headers头的分析与申请浏览
在控制台的网络中点击任意绿色条,弹出下列文件,任意点击一个后即可分析请求头。
headers= {'', #用户代理
}
def getDb_text(url,headers):response = requests.get(url, headers=headers)response.encoding = 'utf-8'return response.text
return response.text
核心代码
利用循环与清空的逻辑依次录入每一个页面的可见资料到总列表中。
for start in range(0,226,25):start1 = str(start)url = 'https://movie.douban.com/top250?start='+start1+'&filter='Dbhtml = etree.HTML(getDb_text(url, headers))DbNo = []Dbname = []Dbpf = []Dbpeople = []DbNo = Dbhtml.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[1]/em/text()') # 排名Dbname = Dbhtml.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[2]/div[1]/a/span[1]/text()') # 电影名Dbpf = Dbhtml.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[2]/div[2]/div/span[2]/text()') # 评分Dbpeople = Dbhtml.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[2]/div[2]/div/span[4]/text()') # 评价人数for i in range(0,25):list_a = []list_a.append(DbNo[i])list_a.append(Dbname[i])list_a.append(Dbpf[i])list_a.append(Dbpeople[i])Tjy = str(i+1)Tjy1='//*[@id="content"]/div/div[1]/ol/li['+Tjy+']/div/div[2]/div[2]/p[2]/span/text()'Tjy2= Dbhtml.xpath (Tjy1) # 获取推荐语list_a=list_a+Tjy2print(list_a)list_2.append(list_a)
完整代码
import requests
from lxml import etree
from openpyxl import Workbook# 录入数据
def writer():ws1 = wb.create_sheet('sheet1', index=0)ws1.column_dimensions['B'].width = 25ws1.column_dimensions['D'].width = 23ws1.column_dimensions['E'].width = 100ws1['A1'] = '排名'ws1['B1'] = '名称'ws1['C1'] = '评分'ws1['D1'] = '评价人数'ws1['E1'] = '推荐语'ws1['F1'] = '推荐指数'for iu in list_2:ws1.append(iu)
# 录入无评语数据
def writer1():ws2 = wb.create_sheet('no_desc_movie', index=0)ws2.column_dimensions['B'].width = 25ws2.column_dimensions['D'].width = 23ws2['A1'] = '排名'ws2['B1'] = '名称'ws2['C1'] = '评分'ws2['D1'] = '评价人数'for anyone in list_2:if len(anyone)<5:ws2.append(anyone)
# 头
headers= {'', #用户代理
}
def getDb_text(url,headers):response = requests.get(url, headers=headers)response.encoding = 'utf-8'return response.text
# 获取电影的信息
def main():for start in range(0,226,25):start1 = str(start)url = 'https://movie.douban.com/top250?start='+start1+'&filter='Dbhtml = etree.HTML(getDb_text(url, headers))DbNo = []Dbname = []Dbpf = []Dbpeople = []DbNo = Dbhtml.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[1]/em/text()') # 排名Dbname = Dbhtml.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[2]/div[1]/a/span[1]/text()') # 电影名Dbpf = Dbhtml.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[2]/div[2]/div/span[2]/text()') # 评分Dbpeople = Dbhtml.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[2]/div[2]/div/span[4]/text()') # 评价人数for i in range(0,25):list_a = []list_a.append(DbNo[i])list_a.append(Dbname[i])list_a.append(Dbpf[i])list_a.append(Dbpeople[i])Tjy = str(i+1)Tjy1='//*[@id="content"]/div/div[1]/ol/li['+Tjy+']/div/div[2]/div[2]/p[2]/span/text()'Tjy2= Dbhtml.xpath (Tjy1) # 获取推荐语list_a=list_a+Tjy2print(list_a)list_2.append(list_a)
if __name__ == '__main__':# 创建表excel_path = ' ' #保存excel文件的路径wb = Workbook()list_2 = []main()writer()writer1()wb.save(excel_path)
总结
本文章不做商业用途,纯属记录自身学习过程所写下的代码。
Python爬虫并不难,但是必须遵守http协议,在不破坏网络环境的前提下适当爬取所需的资源。
Python爬取豆瓣Top250电影可见资料并保存为excel形式相关推荐
- Python爬取豆瓣Top250电影中2000年后上映的影片信息
Python爬取豆瓣Top250电影中2000年后上映的影片信息 前言 双十一前加在京东购物车的一个东西,价格330,Plus会员用券后差不多310.双十一当天打开看了下399,还得去抢满300减10 ...
- python爬取豆瓣TOP250电影
按照小甲鱼的爬虫教程,再自己修改了一部分. 废话不多说,直接贴代码 import requests from bs4 import BeautifulSoup import redef open_ur ...
- Python爬取豆瓣Top250电影排名
# -*- codeing = utf-8 -*- # @Time: 2021/12/27 14:30 # @Author: 买欣怡 # @File: 7. spider-豆瓣.py # @Softw ...
- [python爬虫] BeautifulSoup和Selenium对比爬取豆瓣Top250电影信息
这篇文章主要对比BeautifulSoup和Selenium爬取豆瓣Top250电影信息,两种方法从本质上都是一样的,都是通过分析网页的DOM树结构进行元素定位,再定向爬取具体的电影信息,通过代码的对 ...
- Python爬虫菜鸟入门,爬取豆瓣top250电影 (自己学习,如有侵权,请联系我删除)
Python爬虫菜鸟入门,爬取豆瓣top250电影 (自己学习,如有侵权,请联系我删除) import requests from bs4 import BeautifulSoup import ti ...
- python采用requests+bs4爬取豆瓣top250电影信息
爬取豆瓣top250电影说明 (链接:https://movie.douban.com/top250,可爬取一页或者多页(输出电影的正标题(肖申克的救赎),副标题( The Shawshank Red ...
- python 爬取豆瓣top100电影页面
python 爬取豆瓣top100电影页面 运行结果截图: 代码: (原网站:https://movie.douban.com/top250) 1.将页面保存 避免多次访问 (登陆状态需页面cooki ...
- scrapy爬取豆瓣top250电影数据
scrapy爬取豆瓣top250电影数据 scrapy框架 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. sc ...
- 爬取豆瓣TOP250电影的评分、评价人数、短评等信息,并在其保存在sql数据库中。
爬取目标 爬取豆瓣TOP250电影的评分.评价人数.短评等信息,并在其保存在sql数据库中. 最终实现效果如图: 确定爬取的URL 爬取的网页地址为:https://movie.douban.com/ ...
最新文章
- Redis 难题突破,最经典 46 题含详细解析
- graphpad怎么处理cck8的_Graphpad Prism 的 4 个隐藏技能助你轻松发表 SCI
- CCF真题 201312-2 ISBN号码
- Expert Shell Scripting
- Finacial professional
- windows下可用mysql吗_Windows下MySQL安装配置与使用
- 树莓派 鼠标延迟问题【Linux】
- java子类访问父类私有成员_Java中子类可以继承父类的私有成员,但是不能(直接)访问!!!...
- JavaScript:数据类型判断的方法
- Linux(CentOS6.4、CentOS6.3)下安装、配置PostgreSQL9.2
- JAVA语法基础作业——动手动脑以及课后实验性问题 (七)
- 渗透测试-主动信息收集(3)
- uniapp 最接近微信的图片压缩插件 Ba-ImageCompressor
- 量子计算与量子软件(一)
- Kafka——Sender 线程分析
- 潜伏在大厂中“摸鱼”的打工人
- 【Python数据分析】基础入门学习指南到数据分析实战
- Oracle监听器启动出错:本地计算机上的OracleOraDb11g_home1TNSListener服务启动后又停止了解决方案...
- 关于海量级存储用户标签体系架构
- websocket连接