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多条了,估计到晚上大概应该差不多就好了...

送福利了,车牌号拿好

 

知识就是力量啊....

注意身体:)

 

 

 

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

posted on 2017-04-20 12:22  胖咸鱼  阅读(7206)  评论(1编辑  收藏  举报

导航