scrapy 第三個項目爬取網站的所有源碼


任務 :1爬取分類下的url       地址:https://matplotlib.org/examples/index.html

   2爬取url下下載代碼的url 涉及模塊:import scrapy  from scrapy.linkextractors import LinkExtractor

   3下載所有代碼ur     涉及知識:response下xpath、css的爬取

 

分類下的url:url1 = LinkExtractor(restrict_css='a.reference.internal::attr(href)')

url下的代碼url:url2 = response.css('a.reference.external::attr(href)').extract_first()

由於爬取到的是片段,還需要合成網址,所以第一個用links = le.extract_links(response)來合成,第二個用urljoin來合成

直接以兩個函數來分開操作,def parse(self, response):  和  def parse_example(self,response):  分別對應url1和url2

def parse(self, response): 

  url1 = LinkExtractor(restrict_css='a.reference.internal')

  links = le.extract_links(response)

  yield scrapy.Request(link.url,callback=self.parse_example)

  四句代碼,就可以把分類中所有的鏈接弄到手

def parse_example(self,response):

  url2 =response.css('a.reference.external::attr(href)').extract_first()

  links = response.urljoin(url2)

  

  這樣子就可以把代碼下載鏈接拿到手了

接下來就是要下載代碼鏈接中的東西了,首先要啟用這里面的代碼

然后在后面添加一句這樣的代碼,指定文件下載的目錄

FILES_STORE = 'jike_src

 最好別填錯這里,不然就要像我一樣檢查半天才發現問題在於我沒改后面那個,它的默認值是300,如果不改成1的話就沒辦法執行了

之后定義在items定義一個字典,以便查看進度。

class JikeItem(scrapy.Item):
file_urls = scrapy.Field()
files = scrapy.Field()

回到yuanma.py中導入from ..items import JikeItem
最后只需要在

def parse_example(self,response):

  url2 =response.css('a.reference.external::attr(href)').extract_first()

  links = response.urljoin(url2)

基礎上加入

  yuanma = JikeItem()

  yuanma['file_urls'] = [url2]

  return yuanma

就完成了。但是我不知道文件夾放在哪里。。。。。。。。。。。。


免責聲明!

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



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