python之scrapy实战篇(爬取电影网站的相关信息)

缘由:

由于我是一个比较喜欢看电影的人,但是又是个孩子,所以技术改变生活,虽然说直接打开浏览器下载就好了,但是我懒,所以借此机会用Scrapy框架来简单爬取一个电影网站

需要获取的信息:

--电影名称
--上映日期
--影片分类(我不看恐怖片)
--剧情介绍(这是一定要看的)
--下载地址(迅雷,我用这个 --> 迅雷打钱)

分析网页

图中箭头部分就是主页我们想要的部分,想要爬取其他部分也可以更改css选择器的部分代码。
在这里插入图片描述

查看源码在这里插入图片描述
观察标签的路径,就有了初步的了解,方便我们下一步解析

开始scrapy-spider爬虫书写

进入自己想进入的文件夹,在cmd窗输入
–scrapy startproject Movies-Spider
创建scrapy工程
进入项目工程下的Spider目录,创建我们自己的spider文件
在这里插入图片描述
这样我们就创建好了我们的scrapy项目,并加入到相关文件夹中创建了一个Movies.py文件。

开始编写相关代码

在此之前,我们需要关闭在scrapy工程文件中setting.py的服从robot.txt规则,改为不服从。

#Obey robots.txt rules
ROBOTSTXT_OBEY = False

伪装自己

具体可看浏览器伪装

在item.py中设置返回项,以便我们保存文件

在这里插入图片描述

编写spider
import scrapy
import re, requests
from Movies.items import MoviesItem


class moviesSpider(scrapy.Spider):
    name = "Movies"  # Spider Name if you want to run spider you can get in folder and execute the order : scrapy crawl Movies

    start_urls = ['http://www.920hdhd.com/?tz']  # which url we want to request
    Url = ""
    link = ""

    def getLink(self, i):
        Bs = {'user-agent': 'Firefox/18.1.0.2145'}
        url = "http://www.920hdhd.com" + self.Url[i]
        r = requests.get(url, headers=Bs, timeout=60)
        r.encoding = r.apparent_encoding
        pattern = re.compile(r'generate_down(.*?);', re.S)
        Mess = re.findall(pattern, r.text)
        link = Mess[0]
        link = link[2:]
        self.link = link[:-2]

    def Sec_prase(self, response):
        # <div class="row1"><div class="left">影片名称:</div><div class="row_right"><strong>蜘蛛侠:平行宇宙BD高清中英双字</strong></div></div>
        Movies = MoviesItem()
        Movies['name'] = response.css('div.row_right strong::text').get()
        Movies['classify'] = response.css('div.row_right a::text').get()
        Movies['introduce'] = response.css('div.text::text').get()
        Movies['download'] = self.link
        yield Movies

    def parse(self, response):

        for div in response.css('div.title'):
            # yield {
            #     #     'sidebar-title': div.css('a::text').getall(),
            #     's': div.css('a::attr(href)').getall(),
            #    # 'len': len(div.css('a::attr(href)').getall())
            # }
            self.Url = div.css('a::attr(href)').getall()
            for i in range(len(self.Url)):
                self.getLink(i)
                if self.Url[i] is not None:
                    yield response.follow(self.Url[i], callback=self.Sec_prase)

运行效果图在这里插入图片描述

在cmd窗口输入scrapy crawl Movies -o mo.csv即可获得数据存储成本地文件。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值