使用Python爬虫爬取豆瓣电影排行榜

1.信息分析

需要获取的信息有:电影名、评分、导演、编剧、演员、日期、评论数、类型、详情页链接等。
需要爬取的网站地址:豆瓣电影排行榜
页面截图如下

从上面的图片可以看出,只是在首页并不能获得所有需要的信息,并且信息并不是完整的还有遗漏。
所以获得信息时需要进入每个电影所在的也就是详情页页面。如下图

2.解析方法

lxml方法

首先如果想要对网页进行解析,那么加一个请求头必不可少,在插入请求头时,不仅要加入我们熟悉的User-Agent,还要加一个Cookie,Cookie是用来存储网页中的账号密码信息,如果在headers中加入一个Cookie,如果不加Cookie,在爬几次过后很有可能会显示登陆跳转。

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36','Cookie': ''}

获取Cookie的方法也很简单,登录豆瓣后打开网站的检查功能,在Network中就可获得,方法类似于获得User-Agent,如下图。
有了headers以后就可以使用request方法与lxml方法来对网页进行解析,代码如下。

import requests
from lxml import etree
url = 'https://movie.douban.com/chart'
html = requests.get(url,headers=headers).text
data = etree.HTML(html)

此时,data中存储的信息就是已经解析过的信息了,可以直接使用lxml方法来解析,一般使用Xpath语句来进行查找所需要的信息。
前期工作已经完成,那么,我们现在开始解析所需要的信息,因为前面已经分析了,想要获得完整的信息,需要进入每个电影的详情页来进行爬取,所以我们需要在首页中得到所有电影的详情页链接,通过检查,可以获得电影的详情页链接,如下图

由上图可以得到详情页链接的Xpath语句为//div[@class=‘pl2’]/a/@href,代码如下:

urllist = data.xpath("//div[@class='pl2']/a/@href")

注意的是xpath方法返回的值为一个列表,无论查找符合条件的数据有多少,返回的都是一个列表。
此时的urllist存储的为首页所有电影的详情页链接。
此时如果想要获得更多的信息,就需要再对所获得的详情页链接进行以上相同的步骤,这里xpath语法的获取就不赘述了,代码如下:

html = requests.get(url,headers=headers).text
data = etree.HTML(html)
电影名 = data.xpath("//h1/span[1]/text()")[0]
导演 = data.xpath("//span[1]/span[@class='attrs']/a/text()")[0]
编剧 = data.xpath("//span[2]/span[@class='attrs']/a/text()")
主演 = data.xpath("//a[@rel='v:starring']/text()")
类型 = data.xpath("//span[@property='v:genre']/text()")
评分 = data.xpath("//strong[@property='v:average']/text()")[0]
评论数 = data.xpath("//span[@property='v:votes']/text()")[0]
item = {'电影名':电影名,'导演':导演,'编剧':编剧,'主演':主演,'类型':类型,'评分':评分,'评论数':评论数,'详情页链接':url,}

需要注意的是,因为电影名导演等信息只有一个,且上面已经解释了xpath方法获得的信息是一个列表,所以就在xpath方法后加了[0],并将所有获得的信息存在item中。
所以,只需要遍历urllist就可以获得所有电影的信息,创建一个队列,将所有的信息存入itemQueue中。代码如下:

from queue import Queue
itemQueue = Queue()
for url in urllist:解析网页数据代码块itemQueue.put(item)

此时,所有所需的信息都存入了itemQueue队列中。
如果需要将所有信息输出则需要以下代码:

while True:if itemQueue.empty()==False:item = itemQueue.get()print(item)else:break

运行结果如下(不完全):

3.源码

# encoding:utf-8
import time
from queue import Queue
import requests
from lxml import etree
url = 'https://movie.douban.com/chart'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36','Accept-Language':'zg-CN,zh;q=0.8','Cookie': ''}#Cookie需要自己使用自己的Cookie
html = requests.get(url,headers=headers).text
data = etree.HTML(html)
urllist = data.xpath("//div[@class='pl2']/a/@href")
itemQueue = Queue()
for url in urllist:html = requests.get(url,headers=headers).textdata = etree.HTML(html)电影名 = data.xpath("//h1/span[1]/text()")[0]导演 = data.xpath("//span[1]/span[@class='attrs']/a/text()")[0]编剧 = data.xpath("//span[2]/span[@class='attrs']/a/text()")主演 = data.xpath("//a[@rel='v:starring']/text()")类型 = data.xpath("//span[@property='v:genre']/text()")评分 = data.xpath("//strong[@property='v:average']/text()")[0]评论数 = data.xpath("//span[@property='v:votes']/text()")[0]item = {'电影名':电影名,'导演':导演,'编剧':编剧,'主演':主演,'类型':类型,'评分':评分,'评论数':评论数,'详情页链接':url,}itemQueue.put(item)time.sleep(2)
while True:if itemQueue.empty()==False:item = itemQueue.get()print(item)else:break

使用lxml爬取豆瓣电影排行榜相关推荐

  1. python大规模获取豆瓣影评_python爬取豆瓣电影排行榜(requests)

    ''' 爬取豆瓣电影排行榜 设计思路: 1.先获取电影类型的名字以及特有的编号 2.将编号向ajax发送get请求获取想要的数据 3.将数据存放进excel表格中 ''' 环境部署: 软件安装: 模块 ...

  2. 爬取豆瓣电影排行榜,并制作柱状图与3d柱状图

    **爬取豆瓣电影排行榜,并简单制作柱状图 一.首先,我们需要获取页面的信息,下图是从排行第25到50的电影,由此可见start可以想象为偏移量,我们把start的值换为0,得到了第一到25排名的电影, ...

  3. python爬虫爬取豆瓣电影排行榜并通过pandas保存到Excel文件当中

    我们的需求是利用python爬虫爬取豆瓣电影排行榜数据,并将数据通过pandas保存到Excel文件当中(步骤详细) 我们用到的第三方库如下所示: import requests import pan ...

  4. [爬虫] 爬取豆瓣电影排行榜

    申明:本文对爬取的数据仅做学习使用,不涉及任何商业活动,侵删 爬取豆瓣电影排行榜 这是一个Scrapy框架入门级的项目, 它可以帮助我们基本了解Scrapy的操作流程和运行原理 这次我们要做例子的网站 ...

  5. python用bs4爬取豆瓣电影排行榜 Top 250的电影信息和电影图片,分别保存到csv文件和文件夹中

    python用bs4爬取豆瓣电影排行榜 Top 250的电影信息和图片,分别保存到csv文件和文件夹中. 爬取的数据包括每个电影的电影名 , 导演 ,演员 ,评分,推荐语,年份,国家,类型. py如果 ...

  6. Scrapy框架学习 - 爬取豆瓣电影排行榜TOP250所有电影信息并保存到MongoDB数据库中

    概述 利用Scrapy爬取豆瓣电影Top250排行榜电影信息,并保存到MongoDB数据库中 使用pymongo库操作MOngodb数据库 没有进行数据清洗 源码 items.py class Dou ...

  7. 爬取豆瓣电影排行榜top250

    爬取豆瓣电影top250 平时不知道看什么电影,正好最近学习了爬虫,自己试着把电影排行下载下来,边看边学两不误. 下面直接上代码: import requests from bs4 import Be ...

  8. python爬取豆瓣电影排行榜数据

    电影推荐-豆瓣电影排行榜数据抓取 目标网址:https://movie.douban.com/top250?start= 目标数据描述:(1)排名(2)电影名字 (3)链接 (4)导演人员 (5)评价 ...

  9. python爬虫爬取豆瓣电影排行榜,并写进csv文件,可视化数据分析

    #1.爬取内容,写进csv文件 import requests import re import csv #豆瓣电影排行榜,写进csv文件 url = "https://movie.doub ...

  10. 使用Scrapy爬取豆瓣电影排行榜

    网站ICP备案已经完成,是时候搞一波个人网站了,先搞个电影板块,就算没看过,看看影评跟别人扯的时候也好装作自己不是周末宅的样子 环境:python3.7:scrapy1.5 工具:Chrome:Pyc ...

最新文章

  1. 白白浪费了这满园春色
  2. 百度搜出十年前的照片?法院判赔1元~
  3. Python 实用冷门知识整理
  4. mfc工程中添加com接口支持
  5. 游戏里的角色都什么格式图片_二十年前是怎样开发游戏的?
  6. handle和handler的理解
  7. Django Form和ModelForm组件
  8. 【小技巧】【牛客网】【JAVA】在线输入输出练习
  9. pointer-events:none
  10. android ProgressBar 进度条demo
  11. maven的一些依赖
  12. 逆向知识之CS1.6辅助/外挂专题.1.实现CS1.6主武器副武器无限子弹
  13. linux设置搜狗输入法,Ubuntu系统安装和使用搜狗输入法
  14. 关于phyton中print函数的问题
  15. IDEA 编辑文档 提示:只读文档
  16. 进位位判别法_图解停车进位方法及如何确定车距
  17. 2020年育婴员(五级)报名考试及育婴员(五级)模拟考试题
  18. AT1983 BBQ Hard
  19. Activiti实现会签功能程序Demo
  20. 幼儿园小朋友可以教创业者的事

热门文章

  1. main()打成mian()的后果,切记小心
  2. 苹果手机上linux编程,iOS真机调试 - iOS学习笔记_Linux编程_Linux公社-Linux系统门户网站...
  3. 线程优先级 Priority
  4. 安装redhat系统步骤图解_用u盘安装redhat图文教程
  5. tkm批量转mp3工具使用教程
  6. win10下pyt3.7安装scrapy后cmd运行相关命令SyntaxError: invalid syntax 解决办法
  7. 如何将陈述句变为疑问句
  8. 罗素“杀死了”康托尔
  9. code review流程规范
  10. Spring源码分析三:Bean标签解析之BeanDefinition