返回顶部
首页 > 资讯 > 后端开发 > Python >Python如何通过xpath属性爬取豆瓣热映的电影信息
  • 844
分享到

Python如何通过xpath属性爬取豆瓣热映的电影信息

2023-06-25 15:06:48 844人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

本篇文章给大家分享的是有关python如何通过xpath属性爬取豆瓣热映的电影信息,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。前言声明一下:本文主要是研究使用,没有别的用途。

本篇文章给大家分享的是有关python如何通过xpath属性爬取豆瓣热映的电影信息,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

    前言

    声明一下:本文主要是研究使用,没有别的用途。

    GitHub仓库地址:github项目仓库

    页面分析

    主要爬取页面为:https://movie.douban.com/cinema/nowplaying/nanjing/

    至于后面的地区,可以按照自己的需要改一下,不过多赘述了。页面需要点击一下展开全部影片,才能显示全部内容,不然只有15部。所以我们使用selenium的时候,需要加一个打开页面后的点击逻辑。页面图如下:

    Python如何通过xpath属性爬取豆瓣热映的电影信息

    通过F12展开的源码,用xpath helper工具验证一下右键复制下来的xpath路径。

    Python如何通过xpath属性爬取豆瓣热映的电影信息

    为了避免布局调整导致找不到,我把xpath改为通过class名获取。

    Python如何通过xpath属性爬取豆瓣热映的电影信息

    然后看看每个影片的信息。

    Python如何通过xpath属性爬取豆瓣热映的电影信息

    分析一下,是不是可以通过nowplaying的div,作为根节点,然后获取下面class为list-item的节点,里面的属性就是我们要的内容。

    Python如何通过xpath属性爬取豆瓣热映的电影信息

    没什么问题,那么就按照这个思路开始创建项目编码吧。

    实现过程

    创建项目

    创建一个较douban_playing的项目,使用scrapy命令。

    scrapy startproject douban_playing

    Item定义

    定义电影信息实体。

    # Define here the models for your scraped items## See documentation in:# Https://docs.scrapy.org/en/latest/topics/items.html import scrapy  class DoubanPlayingItem(scrapy.Item):    # define the fields for your item here like:    # name = scrapy.Field()    # 电影名    title = scrapy.Field()    # 电影分数    score = scrapy.Field()    # 电影发行年份    release = scrapy.Field()    # 电影时长    duration = scrapy.Field()    # 地区    region = scrapy.Field()    # 电影导演    director = scrapy.Field()    # 电影主演    actors = scrapy.Field()

    中间件操作定义

    主要是点击展开全部影片,需要加一段代码。

    # Define here the models for your spider middleware## See documentation in:# https://docs.scrapy.org/en/latest/topics/spider-middleware.htmlimport time from scrapy import signals # useful for handling different item types with a single interfacefrom itemadapter import is_item, ItemAdapterfrom scrapy.http import HtmlResponsefrom selenium.common.exceptions import TimeoutException  class DoubanPlayingSpiderMiddleware:    # Not all methods need to be defined. If a method is not defined,    # scrapy acts as if the spider middleware does not modify the    # passed objects.     @claSSMethod    def from_crawler(cls, crawler):        # This method is used by Scrapy to create your spiders.        s = cls()        crawler.signals.connect(s.spider_opened, signal=signals.spider_opened)        return s     def process_spider_input(self, response, spider):        # Called for each response that Goes through the spider        # middleware and into the spider.         # Should return None or raise an exception.        return None     def process_spider_output(self, response, result, spider):        # Called with the results returned from the Spider, after        # it has processed the response.         # Must return an iterable of Request, or item objects.        for i in result:            yield i     def process_spider_exception(self, response, exception, spider):        # Called when a spider or process_spider_input() method        # (from other spider middleware) raises an exception.         # Should return either None or an iterable of Request or item objects.        pass     def process_start_requests(self, start_requests, spider):        # Called with the start requests of the spider, and works        # similarly to the process_spider_output() method, except        # that it doesn't have a response associated.         # Must return only requests (not items).        for r in start_requests:            yield r     def spider_opened(self, spider):        spider.logger.info('Spider opened: %s' % spider.name)  class DoubanPlayingDownloaderMiddleware:    # Not all methods need to be defined. If a method is not defined,    # scrapy acts as if the downloader middleware does not modify the    # passed objects.     @classmethod    def from_crawler(cls, crawler):        # This method is used by Scrapy to create your spiders.        s = cls()        crawler.signals.connect(s.spider_opened, signal=signals.spider_opened)        return s     def process_request(self, request, spider):        # Called for each request that goes through the downloader        # middleware.         # Must either:        # - return None: continue processing this request        # - or return a Response object        # - or return a Request object        # - or raise IgnoreRequest: process_exception() methods of        #   installed downloader middleware will be called        # return None        try:            spider.browser.get(request.url)            spider.browser.maximize_window()            time.sleep(2)            spider.browser.find_element_by_xpath("/*;q=0.8',    'Accept-Language': 'en',    'User-Agent': 'Mozilla/5.0 (windows NT 6.2; WOW64) AppleWEBKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36'} # Enable or disable spider middlewares# See https://docs.scrapy.org/en/latest/topics/spider-middleware.htmlSPIDER_MIDDLEWARES = {   'douban_playing.middlewares.DoubanPlayingSpiderMiddleware': 543,} # Enable or disable downloader middlewares# See https://docs.scrapy.org/en/latest/topics/downloader-middleware.htmlDOWNLOADER_MIDDLEWARES = {   'douban_playing.middlewares.DoubanPlayingDownloaderMiddleware': 543,} # Enable or disable extensions# See https://docs.scrapy.org/en/latest/topics/extensions.html#EXTENSIONS = {#    'scrapy.extensions.telnet.TelnetConsole': None,#} # Configure item pipelines# See https://docs.scrapy.org/en/latest/topics/item-pipeline.htmlITEM_PIPELINES = {   'douban_playing.pipelines.DoubanPlayingPipeline': 300,} # Enable and configure the AutoThrottle extension (disabled by default)# See https://docs.scrapy.org/en/latest/topics/autothrottle.html#AUTOTHROTTLE_ENABLED = True# The initial download delay#AUTOTHROTTLE_START_DELAY = 5# The maximum download delay to be set in case of high latencies#AUTOTHROTTLE_MAX_DELAY = 60# The average number of requests Scrapy should be sending in parallel to# each remote server#AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0# Enable showing throttling stats for every response received:#AUTOTHROTTLE_DEBUG = False # Enable and configure HTTP caching (disabled by default)# See https://docs.scrapy.org/en/latest/topics/downloader-middleware.html#httpcache-middleware-settings#HTTPCACHE_ENABLED = True#HTTPCACHE_EXPIRATION_SECS = 0#HTTPCACHE_DIR = 'httpcache'#HTTPCACHE_IGNORE_HTTP_CODES = []#HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage'

    执行验证

    还是老样子,不直接使用scrapy命令,构造一个py执行cmd。注意该py的位置。

    Python如何通过xpath属性爬取豆瓣热映的电影信息

    看一下执行后的结果。

    Python如何通过xpath属性爬取豆瓣热映的电影信息

    完美!

    以上就是Python如何通过xpath属性爬取豆瓣热映的电影信息,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网Python频道。

    --结束END--

    本文标题: Python如何通过xpath属性爬取豆瓣热映的电影信息

    本文链接: https://lsjlt.com/news/305413.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • Python 通过xpath属性爬取豆瓣热映的电影信息
      目录前言页面分析实现过程创建项目Item定义中间件操作定义爬虫定义数据管道定义配置设置执行验证总结前言 声明一下:本文主要是研究使用,没有别的用途。 GitHub仓库地址:githu...
      99+
      2024-04-02
    • Python如何通过xpath属性爬取豆瓣热映的电影信息
      本篇文章给大家分享的是有关Python如何通过xpath属性爬取豆瓣热映的电影信息,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。前言声明一下:本文主要是研究使用,没有别的用途。...
      99+
      2023-06-25
    • python如何爬取豆瓣电影TOP250数据
      这篇文章将为大家详细讲解有关python如何爬取豆瓣电影TOP250数据,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在执行程序前,先在MySQL中创建一个数据库"pachong"。i...
      99+
      2023-06-15
    • 详解使用Selenium爬取豆瓣电影前100的爱情片相关信息
      什么是Selenium Selenium是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome、Firefox、Safari等主流界面浏览器,同时也支持phantomJ...
      99+
      2024-04-02
    • 如何使用Selenium爬取豆瓣电影前100的爱情片
      小编给大家分享一下如何使用Selenium爬取豆瓣电影前100的爱情片,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!什么是SeleniumSelenium是一个用...
      99+
      2023-06-14
    • 如何用scrapy框架爬取豆瓣读书Top250的书类信息
      这篇文章主要讲解了“如何用scrapy框架爬取豆瓣读书Top250的书类信息”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何用scrapy框架爬取豆瓣读书Top250的书类信息”吧!安装方...
      99+
      2023-07-05
    • 如何使用Python爬虫实现抓取电影网站信息并入库
      这篇文章主要介绍如何使用Python爬虫实现抓取电影网站信息并入库,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一.环境搭建1.下载安装包访问 Python官网下载地址:https://www.python.org/...
      99+
      2023-06-29
    • Python如何获取模块中类以及类的属性方法信息
      目录一、sys.modules模块二、inspect模块三、python获取模块中所有类的实例总结一、sys.modules模块 sys.modules是一个全局字典,python启...
      99+
      2024-04-02
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作