爬取电影天堂(阳光电影)全栈爬虫

时间2019年6月1号
本次使用scrapy爬取电影天堂,现在改名成为阳光的电影了。
创建全栈爬虫,我也是第一次听说整个名字

正文开始

1 创建全栈爬虫项目:
(1) scrapy startproject ygdy85Spider
(2) cd ygdy85Spider
(3) scrapy genspider -t crawl ygdy8 ygdy8.net

项目文件创建完成,图片如下:


image.png

定义爬虫。1在spiders文件夹下面的ygdy8.py进行定义

 import scrapy
    import re
    from scrapy.linkextractors import LinkExtractor  #    链接提取器
from scrapy.spiders import CrawlSpider, Rule  # 全栈爬虫和采集规则


class Ygdy8Spider(CrawlSpider):
    name = 'ygdy8'  #爬虫名字
    allowed_domains = ['ygdy8.net']  # 域名限制可爬取的范围
    start_urls = ['http://ygdy8.net/']  # 开始采集网址
   
#  采集规则的集合
    rules = (
        # 具体实现的采集规则
        # 采集导航页电影的部分,allow是选择出所有带有index的网址,allow为正则表达式的书写规则
        Rule(LinkExtractor(allow=r'index.html',deny='game')), #不允许采集那些网址站

        # fellow 下一次提取的网页中如果包含我们需要提取的信息,是否继续提取
        Rule(LinkExtractor(allow=r"list_\d+_\d+.html"),follow=True),

        # allow 提取详情页,callback回调函数 ,将响应交给对应函数
        Rule(LinkExtractor(allow=r'/\d+/\d+.html'),callback='parse_item', follow=True),
    )

# 解析数据
    def parse_item(self, response):
        # i = {}
        #i['domain_id'] = response.xpath('//input[@id="sid"]/@value').extract()
        #i['name'] = response.xpath('//div[@id="name"]').extract()
        #i['description'] = response.xpath('//div[@id="description"]').extract()
        # return i
        ftp_url = re.findall('ftp',response.text)
        print(ftp_url)

        yield ftp_url  # 返回字典格式

此网站暂时没有反爬措施。或许是我采集的连接没有反爬措施。最后的yield部分可以粗糙的改成进行保存。

with open ("ygdy8.txt",newline="",encoding="utf-8") as file:
    file.write(ftp_url)

一般来说,比较正统的保存技术是在pipelines.py文件中进行保存。在里面定义链接我们的数据库。引入相应的模块。当然就需要使用到yield.还有items定义好需要提取的数据字段。

请大佬推荐逆向js的思路及视频。邮箱:[email protected]

你可能感兴趣的:(爬取电影天堂(阳光电影)全栈爬虫)