美文网首页
2018-09-05 scrapy-spider(二)

2018-09-05 scrapy-spider(二)

作者: 认真的史莱冰 | 来源:发表于2018-09-06 16:31 被阅读0次

        下面介绍basic,如果使用这个模板可以直接在spider子目录下创建文件(因为要写的东西不多)

    这是用 scrapy genspider -t basic basictmp xxx.com 所创建的一个爬虫文件其实里面内容并不多,如果是直接创建文件问题也不大。

    这里class BasictmpSpider是我们的爬虫类,里面关键的几个变量

    name = 'basictmp'这个是爬虫的名字,这个名字和类名可以不一样,我们最后运行爬虫的时候记录的是这个名字,而不是类名

    allowed_domains这是可以访问的域名,是一个列表,主要是防止爬虫在爬取网站的时候没有收住,爬到一些不需要的网站上去了

    start_urls 这里的链接将直接进入调度器,调度器会对齐进行排列并让下载器下载其中的内容

    parse函数,解析函数,下载器下载完response后将由parse函数对齐进行解析

    如何用basic函数爬去二级链接呢(有两种方法,纯脚本的比如用requests.get去访问的就不说了)

    用scrapy.Reuqest(url,callback)(发出get请求)

    def __init__(self, url, callback=None, method='GET', headers=None, body=None,cookies=None, meta=None, encoding='utf-8', priority=0,dont_filter=False, errback=None, flags=None):(这是源码中的__init__)

    这里的参数

    url是我们的链接,这个链接会直接直接传给调度器,然后分析后的response会传递给callback所指定的解析函数。

    callback回调函数,响应拿到的response会给那个解析函数去分析由他来指定

    method(除了get,post方法,还有put,path,delete之类的)

    headers(就头信息,ua ,cookie之类的都能往里面传)

    body

    cookies是设置请求的cookie

    meta用来传递一些信息,比如我们打开了一个response有一些信息是你需要的,可是还有一部分信息在下一个二级链接中,你就可以把这些信息

    传递到下一个二级链接中去

    encoding是编码的格式

    priority是优先级,如果设置的高就早点处理你这个request

    dont_filter有时候一个页面要请求两次,这时候就不能过滤以打开的页面了

    errback用于记录错误

    flags我也不知道干啥的

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    如果我们要用post一些信息的时候一般用FormRequest函数

    def __init__(self, *args, **kwargs):

    和上面差不多,就是多了fomadata这里面是你要post的信息

    相关文章

      网友评论

          本文标题:2018-09-05 scrapy-spider(二)

          本文链接:https://www.haomeiwen.com/subject/prxzwftx.html