Scrapy学习第六课

Posted helenandyoyo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scrapy学习第六课相关的知识,希望对你有一定的参考价值。

python爬虫框架scrapy学习第六课

知识点:start_requests()

  • 函数解释:该方法必须返回一个可迭代对象(iterable)。该对象包含了spider用于爬取的第一个Request。当spider启动爬取并且未制定URL时,该方法被调用。 当指定了URL时,make_requests_from_url() 将被调用来创建Request对象。 该方法仅仅会被Scrapy调用一次,因此您可以将其实现为生成器。该方法的默认实现是使用 start_urls 的url生成Request。

  • 源码分析:针对start_urls中的每一个url 发起resquest请求。当start_urls中有多个链接时,逐步发起请求。

def start_requests(self):
    for url in self.start_urls:
        yield self.make_requests_from_url(url)
def make_requests_from_url(self, url):
    return Request(url, dont_filter=True)
  • 代码演示
    – 不显示引用start_requests展示爬取顺序和爬取结果
import scrapy

class KrSpider(scrapy.Spider):
    name = 'kr'
    allowed_domains = ['ifeng.com']
    start_urls = [
        'http://news.ifeng.com/a/20181225/60208881_0.shtml',
        'http://news.ifeng.com/a/20181225/60208818_0.shtml',
        'http://news.ifeng.com/a/20181225/60208776_0.shtml'
    ]
    
    def parse(self, response):
        filename = "test.html"
        title = response.xpath('//h1[@id="artical_topic"]/text()').extract()
        print(title)
        

start_urls中包含3个url,按照函数释义,会按照顺序逐步被调用爬取数据,观其结果可知,顺序和结果是正确的。

–修改start_requests的内容,通过爬虫结果,证实该函数在发起爬取过程中被调用

import scrapy


class KrSpider(scrapy.Spider):
    name = 'kr'
    allowed_domains = ['ifeng.com']
    start_urls = [
        'http://news.ifeng.com/a/20181225/60208881_0.shtml',
        'http://news.ifeng.com/a/20181225/60208818_0.shtml',
        'http://news.ifeng.com/a/20181225/60208776_0.shtml'
    ]

    def start_requests(self):
       yield scrapy.Request(url=self.start_urls[0], callback=self.parse)

    def parse(self, response):
        filename = "test.html"
        title = response.xpath('//h1[@id="artical_topic"]/text()').extract()
        print(title)
        

从结果中可知,显示的start_requests函数被调用,覆盖原有的功能。

  • 代码修改:get变post…该功能暂未学习,后续补充。

以上是关于Scrapy学习第六课的主要内容,如果未能解决你的问题,请参考以下文章

Python学习,第六课 - 集合

性能测试学习 第六课

Python第六课(编程语言学习前期)

OpenGl学习进程第六课:点边和图形绘制图形

Struts2学习第六课 实现登录登出功能

电脑小白学习第六课---打包压缩软件WINRAR