Scrapy笔记
scrapy命令
- 创建scrapy项目
scrapy startproject myStestSpider #(项目名称)
- 创建爬虫文件
进入spiders文件夹
scrapy genspider myStestSpider "domain"
- 运行爬虫
scrapy crawl myStestSpider
不打印Debug信息
scrapy crawl spider1Project -L WARNING
Request类
爬取普通网站,不需要验证码,不需要登入的界面,我们一般用scrapy.Request类直接去爬取信息
FormRequest
- 模拟表单或Ajax提交post请求的时候用,带有 formdata 方法,专门用来设置表单字段数据,即填写账号、密码,实现登入,默认method也是POST。
- FormRequest相当于是手动指定post
- scrapy.FormRequest 同等于 scrapy.http.FormRequest
Request的重要参数
Request中的主要参数:
# url是要爬取的网址
# callback是回调函数
# method是请求的方式post还是get
# headers是浏览器伪装的头信息
# formdata表单提交的数据(FormRequest类扩展的方法)
# body是网页源代码信息
# cookies是登入某网站后,网站在你电脑上保留的信息
# meta要携带或者传递的信息 自定义,向response传递数据
# encoding是编码方式
# priority用来设置访问网站的优先级
# dont_filter是否允许重复爬取网站
# errback(callback) 在发生错误的时候执行的函数。
Response的重要参数
Response只是一个基类,根据响应内容的不同有如下子类:
TextResponse
HtmlResponse
XmlResponse
- HtmlResponse 对象的属性及方法
-
url
HTTP 响应的url地址,str 类型。 -
status
HTTP 响应的状态码,int 类型。 -
headers
HTTP 响应的头部,dict 类型。可以调用get或getlist方法对其进行访问。 -
body
HTTP 响应正文,bytes 类型。 -
text
文本形式的HTTP响应正文,str 类型,它是由 response.body 使用 response.encoding 解码得到的。
response.text = response.body.decode(response.encoding) -
encoding
HTTP 响应正文的编码,它的值可能是从HTTP响应头部或正文中解析出来的 -
request
产生该HTTP 响应的Request对象。 -
meta
即 response.request.meta, 在构造 Request对象时,可将要传递给响应处理函数的信息通过meta参数传入;响应处理函数处理响应时,通过response.meta 将信息取出。 -
selector
Selector 对象用于在Response 中提取数据。 -
xpath(query)
使用XPath选择器在Response中提取数据;它是 response.selector.xpath 方法的快捷方式。 -
css(query)
使用 CSS选择器在Response中提取数据;它是 response.selector.css方法的快捷方式。 -
urljoin (url)
用于构造绝对 url 。当传入的url参数是一个相对地址时,根据response.url 计算出相应的绝对 url。
-
shotting source code