任務 :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
就完成了。但是我不知道文件夾放在哪里。。。。。。。。。。。。
