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