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多條了,估計到晚上大概應該差不多就好了...

送福利了,車牌號拿好

 

知識就是力量啊....

注意身體:)

 

 

 

---恢復內容結束---


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM