python 利用scrapy爬取豆瓣TOP250部电影信息分别保存为csv、json、存入mysql、下载海报图片

该博客详细介绍了如何使用Python的Scrapy框架,结合fake_useragent中间件设置User-Agent,实现对豆瓣Top250电影信息的爬取。内容包括创建CSV、JSON文件,将数据存储到MySQL数据库,以及下载电影海报图片。在Pipelines.py中定义了四个处理管道,分别处理不同格式的数据存储,并在settings.py中配置了请求间隔、重试策略等参数。开始爬虫前,begin.py会创建MySQL表并启动爬虫,整个过程中需要注意文件写入的细节和图片路径的修改。
摘要由CSDN通过智能技术生成

目的网址https://movie.douban.com/top250

最后保存的内容:csv文件、json文件、存入mysql、下载海报图片

要点:1.middlewares.py 设定UA

          2.Pipelines.py  保存为json文件 注意json.dumps()的用法

                  保存为csv文件,注意csv文件的写法,newline等等,还有os.path.getsize得出文件的大小

                  插入数据到mysql库,利用lazystore,还得先在begin创建table

                  下载图片,修改图片的路径名字!!PS:这个只能放在最后执行,因为改名后item会变乱!

       3.settings.py 设定重试、间隔时间、带cookies登录、设定UA、设定Pipe的执行顺序、图片下载设定

       4.begin.py  利用lazystore,创建table,,启动spider,直接保存csv文件的方法


主体spider.py(其实内容很简单!)
import scrapy
from doubanmovie.items import DoubanmovieItem
from scrapy.selector import Selector

class XianxiSpider(scrapy.Spider):
    name = "doubanmovie"         #begin 好像用的就是这个名字
    allowed_domains = ['movie.douban.com']
    start_urls = ['https://movie.douban.com/top250']
    # 我们爬取35页的全部热门段子

    def parse(self, response):
        sel=Selector(response)
        movies = response.xpath('//div[@class="item"]')
        item = DoubanmovieItem()
        for movie in movies:
            title=movie.xpath('.//div[@class="hd"]/a').xpath('string(.)').extract()
            name="".join(title).strip()
            item['name']=name.replace('\r\n', '').replace(' ', '').replace('\n', '')
            infos = movie.xpath('.//div[@class="bd"]/p').xpath('string(.)').extract()
            info="".join(infos).strip()
            item['info'] = info.replace('\r\n', '').replace(' ', '').replace('\n', '')
            item['rating'] = movie.xpath('.//span[@class="rating_num"]/text()').extract()[0].strip()
            item['num'] = movie.xpath('.//div[@class="star"]/span[last()]/text()').extract()[0].strip()[:-3]
            quotes = movie.xpath('.//span[@class="inq"]/text()').extract()
            quote 
好的,下面是使用Scrapy爬取豆瓣Top250电影的步骤: 1. 创建新的Scrapy项目 在命令行中使用以下命令创建新的Scrapy项目: ``` scrapy startproject douban_top250 ``` 这将创建一个名为douban_top250的新Scrapy项目。 2. 创建Spider 在Scrapy项目中,Spider是用于定义如何爬取特定网站的类。在douban_top250项目中创建一个新的Spider,命名为douban_spider.py。 在douban_spider.py中,我们将定义如何爬取豆瓣Top250电影的网页。 ```python import scrapy class DoubanSpider(scrapy.Spider): name = "douban" allowed_domains = ["douban.com"] start_urls = ["https://movie.douban.com/top250"] def parse(self, response): pass ``` 在上面的代码中,我们定义了一个名为DoubanSpider的Spider类。我们设置了Spider的名称为“douban”,并设置了豆瓣网站的域名为“douban.com”。 我们还定义了一个start_urls列表,其中包含我们要爬取的第一个网址。最后,我们定义了一个名为parse的方法,该方法将在Scrapy下载网页并准备解析后自动调用。 3. 解析网页 在parse方法中,我们将解析豆瓣Top250电影的网页。请注意,我们需要使用XPath或CSS选择器来提取我们需要的数据。 ```python import scrapy class DoubanSpider(scrapy.Spider): name = "douban" allowed_domains = ["douban.com"] start_urls = ["https://movie.douban.com/top250"] def parse(self, response): for movie in response.xpath('//div[@class="info"]'): yield { "title": movie.xpath('div[@class="hd"]/a/span[@class="title"]/text()').extract_first(), "rating": movie.xpath('div[@class="bd"]/div[@class="star"]/span[@class="rating_num"]/text()').extract_first(), "link": movie.xpath('div[@class="hd"]/a/@href').extract_first(), } ``` 在上面的代码中,我们使用XPath选择器来提取电影的标题、评分和链接。我们使用yield关键字将每个电影的数据作为字典返回。由于我们使用yield关键字而不是return关键字,这将使Scrapy在处理每个电影时暂停,而不是等待所有电影都被处理后再返回它们的数据。 4. 运行Spider 要运行Spider,请在命令行中转到Scrapy项目的根目录,并使用以下命令: ``` scrapy crawl douban -o douban.csv ``` 这将运行名为“douban”的Spider,并将结果保存在名为“douban.csv”的CSV文件中。 这就是使用Scrapy爬取豆瓣Top250电影的简单步骤。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值