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形式相关推荐

  1. Python爬取豆瓣Top250电影中2000年后上映的影片信息

    Python爬取豆瓣Top250电影中2000年后上映的影片信息 前言 双十一前加在京东购物车的一个东西,价格330,Plus会员用券后差不多310.双十一当天打开看了下399,还得去抢满300减10 ...

  2. python爬取豆瓣TOP250电影

    按照小甲鱼的爬虫教程,再自己修改了一部分. 废话不多说,直接贴代码 import requests from bs4 import BeautifulSoup import redef open_ur ...

  3. Python爬取豆瓣Top250电影排名

    # -*- codeing = utf-8 -*- # @Time: 2021/12/27 14:30 # @Author: 买欣怡 # @File: 7. spider-豆瓣.py # @Softw ...

  4. [python爬虫] BeautifulSoup和Selenium对比爬取豆瓣Top250电影信息

    这篇文章主要对比BeautifulSoup和Selenium爬取豆瓣Top250电影信息,两种方法从本质上都是一样的,都是通过分析网页的DOM树结构进行元素定位,再定向爬取具体的电影信息,通过代码的对 ...

  5. Python爬虫菜鸟入门,爬取豆瓣top250电影 (自己学习,如有侵权,请联系我删除)

    Python爬虫菜鸟入门,爬取豆瓣top250电影 (自己学习,如有侵权,请联系我删除) import requests from bs4 import BeautifulSoup import ti ...

  6. python采用requests+bs4爬取豆瓣top250电影信息

    爬取豆瓣top250电影说明 (链接:https://movie.douban.com/top250,可爬取一页或者多页(输出电影的正标题(肖申克的救赎),副标题( The Shawshank Red ...

  7. python 爬取豆瓣top100电影页面

    python 爬取豆瓣top100电影页面 运行结果截图: 代码: (原网站:https://movie.douban.com/top250) 1.将页面保存 避免多次访问 (登陆状态需页面cooki ...

  8. scrapy爬取豆瓣top250电影数据

    scrapy爬取豆瓣top250电影数据 scrapy框架 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. sc ...

  9. 爬取豆瓣TOP250电影的评分、评价人数、短评等信息,并在其保存在sql数据库中。

    爬取目标 爬取豆瓣TOP250电影的评分.评价人数.短评等信息,并在其保存在sql数据库中. 最终实现效果如图: 确定爬取的URL 爬取的网页地址为:https://movie.douban.com/ ...

最新文章

  1. Redis 难题突破,最经典 46 题含详细解析
  2. graphpad怎么处理cck8的_Graphpad Prism 的 4 个隐藏技能助你轻松发表 SCI
  3. CCF真题 201312-2 ISBN号码
  4. Expert Shell Scripting
  5. Finacial professional
  6. windows下可用mysql吗_Windows下MySQL安装配置与使用
  7. 树莓派 鼠标延迟问题【Linux】
  8. java子类访问父类私有成员_Java中子类可以继承父类的私有成员,但是不能(直接)访问!!!...
  9. JavaScript:数据类型判断的方法
  10. Linux(CentOS6.4、CentOS6.3)下安装、配置PostgreSQL9.2
  11. JAVA语法基础作业——动手动脑以及课后实验性问题 (七)
  12. 渗透测试-主动信息收集(3)
  13. uniapp 最接近微信的图片压缩插件 Ba-ImageCompressor
  14. 量子计算与量子软件(一)
  15. Kafka——Sender 线程分析
  16. 潜伏在大厂中“摸鱼”的打工人
  17. 【Python数据分析】基础入门学习指南到数据分析实战
  18. Oracle监听器启动出错:本地计算机上的OracleOraDb11g_home1TNSListener服务启动后又停止了解决方案...
  19. 关于海量级存储用户标签体系架构
  20. websocket连接

热门文章

  1. 新版idea如何刷新maven依赖
  2. 对于idea创建项目后,run的图标是灰色的
  3. Pandas多条件筛选
  4. 不良资产收购中房地产评估的工作要点
  5. linux查看端口号占用命令-netstat
  6. 配置域名访问云服务器
  7. vue3 解决双击与单击事件的冲突
  8. 自己打造一个笔记软件
  9. JavaScript中的事件处理程序
  10. 时尚行业的标签要求复杂多样,TUV南德发布《全球服装、鞋类及配饰标签手册》 | 美通社头条...