iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >爬取豆瓣电影信息
  • 213
分享到

爬取豆瓣电影信息

豆瓣电影信息 2023-01-30 22:01:57 213人浏览 八月长安

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

摘要

昨天写了一个小爬虫,爬取了豆瓣上2017年中国大陆的电影信息,网址为豆瓣选影视,爬取了电影的名称、导演、编剧、主演、类型、上映时间、片长、评分和链接,并保存到mongoDB中。 一开始用的本机的IP地址,没用代理IP,请求了十几个网页之后

昨天写了一个小爬虫,爬取了豆瓣上2017年中国大陆的电影信息,网址为豆瓣选影视,爬取了电影的名称、导演、编剧、主演、类型、上映时间、片长、评分和链接,并保存到mongoDB中。

一开始用的本机的IP地址,没用代理IP,请求了十几个网页之后就收不到数据了,报Http错误302,然后用浏览器打开网页试了一下,发现浏览器也是302。。。


但是我不怕,我有代理IP,哈哈哈!详见我前一篇随笔:爬取代理IP。
使用代理IP之后果然可以持续收到数据了,但中间还是有302错误,没事,用另一个代理IP请求重新请求一次就好了,一次不行再来一次,再来一次不行那就再再来一次,再再不行,那。。。


下面附上部分代码吧。

1.爬虫文件
import scrapy
import JSON
from douban.items import DoubanItem


parse_url = "https://movie.douban.com/j/new_search_subjects?sort=U&range=0,10&tags=%E7%94%B5%E5%BD%B1&start={}&countries=%E4%B8%AD%E5%9B%BD%E5%A4%A7%E9%99%86&year_range=2017,2017"


class Cn2017Spider(scrapy.Spider):
    name = 'cn2017'
    allowed_domains = ['douban.com']
    start_urls = ['https://movie.douban.com/j/new_search_subjects?sort=U&range=0,10&tags=%E7%94%B5%E5%BD%B1&start=0&countries=%E4%B8%AD%E5%9B%BD%E5%A4%A7%E9%99%86&year_range=2017,2017']


    def parse(self, response):
        data = json.loads(response.body.decode())
        if data is not None:
            for film in data["data"]:
                print(film["url"])
                item = DoubanItem()
                item["url"] = film["url"]
                yield scrapy.Request(
                    film["url"],
                    callback=self.get_detail_content,
                    meta={"item": item}
                )

        for page in range(20,3200,20):
            yield scrapy.Request(
                parse_url.fORMat(page),
                callback=self.parse
            )


    def get_detail_content(self,response):
        item = response.meta["item"]
        item["film_name"] = response.xpath("//div[@id='content']//span[@property='v:itemreviewed']/text()").extract_first()
        item["director"] = response.xpath("//div[@id='info']/span[1]/span[2]/a/text()").extract_first()
        item["scriptwriter"] = response.xpath("///div[@id='info']/span[2]/span[2]/a/text()").extract()
        item["starring"] = response.xpath("//div[@id='info']/span[3]/span[2]/a[position()<6]/text()").extract()
        item["type"] = response.xpath("//div[@id='info']/span[@property='v:genre']/text()").extract()
        item["release_date"] = response.xpath("//div[@id='info']/span[@property='v:initialReleaseDate']/text()").extract()
        item["running_time"] = response.xpath("//div[@id='info']/span[@property='v:runtime']/@content").extract_first()
        item["score"] = response.xpath("//div[@class='rating_self clearfix']/strong/text()").extract_first()
        # print(item)
        if item["film_name"] is None:
            # print("*" * 100)
            yield scrapy.Request(
                item["url"],
                callback=self.get_detail_content,
                meta={"item": item},
                dont_filter=True
            )
        else:
            yield item
2.items.py文件
import scrapy


class DoubanItem(scrapy.Item):
    #电影名称
    film_name = scrapy.Field()
    #导演
    director = scrapy.Field()
    #编剧
    scriptwriter = scrapy.Field()
    #主演
    starring = scrapy.Field()
    #类型
    type = scrapy.Field()
    #上映时间
    release_date = scrapy.Field()
    #片长
    running_time = scrapy.Field()
    #评分
    score = scrapy.Field()
    #链接
    url = scrapy.Field()
3.middlewares.py文件
from douban.settings import USER_AGENT_LIST
import random
import pandas as pd


class UserAgentMiddleware(object):
    def process_request(self, request, spider):
        user_agent = random.choice(USER_AGENT_LIST)
        request.headers["User-Agent"] = user_agent
        return None


class ProxyMiddleware(object):
    def process_request(self, request, spider):
        # Called for each request that Goes through the downloader
        # middleware.
        ip_df = pd.read_csv(r"C:\Users\Administrator\Desktop\douban\douban\ip.csv")
        ip = random.choice(ip_df.loc[:, "ip"])
        request.meta["proxy"] = "http://" + ip
        return None
4.pipelines.py文件
from pymongo import MongoClient

client = MongoClient()
collection = client["test"]["douban"]

class DoubanPipeline(object):
    def process_item(self, item, spider):
        collection.insert(dict(item))
5.settings.py文件
DOWNLOADER_MIDDLEWARES = {
    'douban.middlewares.UserAgentMiddleware': 543,
    'douban.middlewares.ProxyMiddleware': 544,
}

ITEM_PIPELINES = {
   'douban.pipelines.DoubanPipeline': 300,
}

ROBOTSTXT_OBEY = False
DOWNLOAD_TIMEOUT = 10
RETRY_ENABLED = True
RETRY_TIMES = 10

程序共运行1小时20分21.473772秒,抓取到2986条数据。


最后,
还是要每天开心鸭!

--结束END--

本文标题: 爬取豆瓣电影信息

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 爬取豆瓣电影信息
    昨天写了一个小爬虫,爬取了豆瓣上2017年中国大陆的电影信息,网址为豆瓣选影视,爬取了电影的名称、导演、编剧、主演、类型、上映时间、片长、评分和链接,并保存到MongoDB中。 一开始用的本机的IP地址,没用代理IP,请求了十几个网页之后...
    99+
    2023-01-30
    豆瓣 电影 信息
  • 爬取豆瓣电影排行top250
    爬取豆瓣电影排行top250 功能分析: 使用的库 1、time 2、json 3、requests 4、BuautifulSoup 5、RequestException """ 作者:李舵 日期:2019-4-27...
    99+
    2023-01-31
    豆瓣 电影排行
  • Python 通过xpath属性爬取豆瓣热映的电影信息
    目录前言页面分析实现过程创建项目Item定义中间件操作定义爬虫定义数据管道定义配置设置执行验证总结前言 声明一下:本文主要是研究使用,没有别的用途。 GitHub仓库地址:githu...
    99+
    2024-04-02
  • python爬取豆瓣top250的电影数
    爬取网址: https://movie.douban.com/top250 一:爬取思路(新手可以看一下) :      1:定义两个函数,一个get_page函数爬取数据,一个save函数保存数据,mian中向get_page函数传递...
    99+
    2023-01-31
    豆瓣 电影 python
  • (转)Python3爬取豆瓣电影保存到
    48行代码实现Python3爬取豆瓣电影排行榜代码基于python3,用到的类库有: 标题文字 requests:通过伪造请求头或设置代理等方式获取页面内容,参考文档BeautifulSoup:对页面进行解析,提取数据,参考文档PyMyS...
    99+
    2023-01-31
    豆瓣 电影
  • 用python爬取豆瓣前一百电影
    目录实现代码:代码分析:运行结果:总结网站爬取的流程图: 实现项目我们需要运用以下几个知识点 一、获取网页1.找网页规律;2.使用 for 循环语句获得网站前4页的网页链接;3.使...
    99+
    2024-04-02
  • Python爬取豆瓣电影方法是什么
    本篇内容主要讲解“Python爬取豆瓣电影方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python爬取豆瓣电影方法是什么”吧!主要目标 环境:MAC + Python3....
    99+
    2023-06-02
  • Python爬虫爬取豆瓣电影之数据提取值
    工具:Python 3.6.5、PyCharm开发工具、Windows 10 操作系统、谷歌浏览器 目的:爬取豆瓣电影排行榜中电影的title、链接地址、图片、评价人数、评分等 网址:https://movie.douban.com/ch...
    99+
    2023-01-30
    爬虫 豆瓣 数据
  • Python如何通过xpath属性爬取豆瓣热映的电影信息
    本篇文章给大家分享的是有关Python如何通过xpath属性爬取豆瓣热映的电影信息,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。前言声明一下:本文主要是研究使用,没有别的用途。...
    99+
    2023-06-25
  • 使用Python怎么爬取豆瓣电影名
    这期内容当中小编将会给大家带来有关使用Python怎么爬取豆瓣电影名,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相比,Pyt...
    99+
    2023-06-14
  • 第一个爬虫——豆瓣新书信息爬取
    本文记录了我学习的第一个爬虫程序的过程。根据《Python数据分析入门》一书中的提示和代码,对自己的知识进行查漏补缺。     在上爬虫程序之前补充一个知识点:User-Agent。它是Http协议中的一部分,属于头域的组成部分,User...
    99+
    2023-01-31
    第一个 爬虫 豆瓣
  • python如何爬取豆瓣电影TOP250数据
    这篇文章将为大家详细讲解有关python如何爬取豆瓣电影TOP250数据,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在执行程序前,先在MySQL中创建一个数据库"pachong"。i...
    99+
    2023-06-15
  • 怎么用python爬取豆瓣前一百电影
    这期内容当中小编将会给大家带来有关怎么用python爬取豆瓣前一百电影,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和面向对象的...
    99+
    2023-06-26
  • 详解使用Selenium爬取豆瓣电影前100的爱情片相关信息
    什么是Selenium Selenium是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome、Firefox、Safari等主流界面浏览器,同时也支持phantomJ...
    99+
    2024-04-02
  • Python爬虫怎么爬取豆瓣影评
    本篇内容主要讲解“Python爬虫怎么爬取豆瓣影评”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python爬虫怎么爬取豆瓣影评”吧!一、学习开始前需安装模块pip install reques...
    99+
    2023-06-02
  • 转载—Python抓取豆瓣电影
    #!/usr/bin/python # -*-coding:utf-8-*- # Python:   2.7 # Program:  爬取豆瓣电影   from bs4 import BeautifulSoup import urllib2...
    99+
    2023-01-31
    豆瓣 电影 Python
  • 13行代码实现爬取豆瓣250电影榜单
    原理很简单,通过发送resquest请求获取服务器的response,再使用xpath提取其中我们需要的数据,然后保存到文件中。 先看看我爬取的结果: 首先,需要用到的模块有两个: •requests •lxml 第一步,我们先用Ch...
    99+
    2023-01-30
    豆瓣 榜单 代码
  • 如何使用Selenium爬取豆瓣电影前100的爱情片
    小编给大家分享一下如何使用Selenium爬取豆瓣电影前100的爱情片,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!什么是SeleniumSelenium是一个用...
    99+
    2023-06-14
  • 利用PyQt5制作一个豆瓣电影信息查看器
    制作一个查看器可以查看豆瓣前100名电影的信息,当然这个爬取信息比较简单。所以重点放在 QThread 多线程的应用上面。 QThread 子线程是 PyQt5 自带的一个线程使用...
    99+
    2024-04-02
  • python 爬取豆瓣电影短评并利用wordcloud生成词云图
    目录前言第一步、准备数据  第二步、编写爬虫代码第三步、生成词云图前言 最近学到数据可视化到了词云图,正好学到爬虫,各种爬网站【实验名称】 爬取豆瓣电影《千与千寻》的评论并...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作