zoukankan      html  css  js  c++  java
  • scrapy框架下爬取老司机网站获取磁力链接

    ---恢复内容开始---

    任务分析:

    找到一个老司机网站,抓取这个网站上所有磁力链接保存到本地。

    这次的任务是一个多级页面的爬取处理。

    知识点分析:

    scrapy框架,Request方法,yield方法,xpath()

    操作步骤:

    1、找到一个确实可以爬取的老司机网站(这步最难。。。

    2、利用xpath()抓取主页面所有title下的名字和url,再把相对url组合成绝对url传给下一个函数进行抓取链接的工作。

    部分代码:

    基于python3X

    (我不会透露自己的老司机网站的..

    1.创建project

    scrapy startproject jav
    

    2.编写items

    import scrapy
    class JavItem(scrapy.Item):
        name=scrapy.Field() #资源的名字
        urls=scrapy.Field() #连接
        lianjie = scrapy.Field()#磁力链接
    

    3.修改settings

    虽然大部分老司机网站没有反爬机制,但是照顾到其他老司机的生理需求,还是做一个有素质的爬虫吧!

    DOWNLOAD_DELAY = 5
    

     在seetings.py中把DOWNLOAD_DELAY参数改为5(默认是3)

    4.spider的编写

    大概的框架:

    import scrapy
    import requests
    from scrapy.http import Request
    from jav.items import JavItem
    
    class JavSpider(scrapy.Spider):
        name = "jav"
        allowed_domains = '***.com' 
        def start_requests(self):                 
            for i in range(1,1084):                          #爬取所有主页面
                if i == 1:
                    url = 'http://www.****.com'
                else:
                    url= 'http://www.***.com/'+str(i)+'.html'
                yield Request(url,callback=self.parse_one)    
               
        def parse_one(self,response):                #解析主页面,获取相对链接和资源的名字
            items = []
            sites =response.xpath('//table') 
            for each in sites:
                item =JavItem()
                item['name']= each.xpath('//tr/td/a/text()').extract()
                item['urls']= each.xpath('//tr/td[1]/a/@href').extract()
                items.append(item)
            for ie in item['urls']:                        #相对链接拼接成绝对链接传给parse_two访问
                url = 'http://www.**.com' + ie
                yield Request(url,callback=self.parse_two,dont_filter=True)  #yield方法,dont_filter置成true是因为下边会有爬出allowed_domains
           
        def parse_two(self,response):
            item =JavItem()                          
            item['lianjie'] = response.xpath('/html/body/div[5]/table[2]/tbody/tr[2]/td/ul/li/a/text()').extract()           
            yield item                                      #这里就是我们要的链接啦!我用的是火狐浏览器的firebug

    5.run spider

    cd desktop/jav               #切换到目录,小细节
    scrapy crawl jav -o jav.json -t json    #用json的格式把所有链接保存到本地jav.json下
    

     实验结果:

    每一页有三十来个,一共有1000+页,现在还在跑,不过目前打开文件点击链接就可以直接唤起播放器开始播放(逃...

    作为一个有素质的爬虫这点等待是值得的。现在爬了1700多条了,估计到晚上大概应该差不多就好了...

    送福利了,车牌号拿好

    知识就是力量啊....

    注意身体:)

    ---恢复内容结束---

  • 相关阅读:
    Java NIO3:缓冲区Buffer
    Java NIO2:NIO概述
    Mybatis学习总结(六)——高级映射(一对一,一对多,多对多)
    Java NIO1:浅谈I/O模型
    Java多线程(三)—— synchronized关键字详解
    Java IO(五)——字符流进阶及BufferedWriter、BufferedReader
    Java IO(四)——字符流
    mysql 实现树形的遍历
    Java IO(三)——字节流
    使用 SVN Hook 实现服务器端代码自动更新
  • 原文地址:https://www.cnblogs.com/deleteme/p/6738102.html
Copyright © 2011-2022 走看看