下面介绍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的信息