Scrapy Shell
scrapy shell是一个交互终端,供您在未启动spider的情况下尝试及调试您的爬取代码。 其本意是用来测试提取数据的代码,不过您可以将其作为正常的Python终端,在上面测试任何的Python代码。
该终端是用来测试XPath或CSS表达式,查看他们的工作方式及从爬取的网页中提取的数据。 在编写您的spider时,该终端提供了交互性测试您的表达式代码的功能,免去了每次修改后运行spider的麻烦。
一旦熟悉了Scrapy终端后,您会发现其在开发和调试spider时发挥的巨大作用。
如果您安装了 IPython ,Scrapy终端将使用 IPython (替代标准Python终端)。 IPython 终端与其他相
比更为强大,提供智能的自动补全,高亮输出,及其他特性。 pip install ipython
启动终端
您可以使用 shell来启动Scrapy终端:
<url> 是您要爬取的网页的地址。注意,这里我们只是进入到scrapy的shell调试里面,到进去以后,我们还可以用fetch(url)来获取其它你想要的网页内容。查看当前你这在看的是哪个网站,可以用response.url进行判断。
scrapy shell <url>
打印日志:
scrapy shell 'http://scrapy.org'
不打印日志:
scrapy shell 'http://scrapy.org' --nolog
语法
- response对象:
- response.body
- response.text
- response.url
- response.status
- response的解析:
- response.xpath() (常用)
使用xpath路径查询特定元素,返回一个selector列表对象 - response.css()
使用css_selector查询元素,返回一个selector列表对象
获取内容 :response.css('#su::text').extract_first()
获取属性 :response.css('#su::attr(“value”)').extract_first()
- response.xpath() (常用)
- selector对象(通过xpath方法调用返回的是seletor列表)
- extract()
提取selector对象的值
如果提取不到值 那么会报错
使用xpath请求到的对象是一个selector对象,需要进一步使用extract()方法拆
包,转换为unicode字符串 - extract_first()
提取seletor列表中的第一个值
如果提取不到值 会返回一个空值
返回第一个解析到的值,如果列表为空,此种方法也不会报错,会返回一个空值 - 注意:每一个selector对象可以再次的去使用xpath或者css方法
- extract()
在spiders中调用shell来检查响应
有时,您希望检查在您的Spider的某个点上正在处理的响应,如果只是检查您期望的响应是否到达那里的话。
这可以通过使用 scrapy.shell.inspect_response 功能。
import scrapy
class MyspiderSpider(scrapy.Spider):
name = 'mySpider'
# allowed_domains = ['www.xxx.com']
start_urls = ['https://www.umei.cc/gaoxiaotupian']
def parse(self, response):
from scrapy.shell import inspect_response
inspect_response(response, self) #程序运行到这里时会跳进shell,结束shell时回到程序继续运行
在shell里可以查看是否是你期望的响应
In [1]: response.xpath('//div[@class="TypeList"]/ul/li[1]/a/span')
Out[1]: [<Selector xpath='//div[@class="TypeList"]/ul/li[1]/a/span' data='<span>老板这次真是亏了血本了!</span>'>]
In [2]: response.url
Out[2]: 'https://www.umei.cc/gaoxiaotupian/'

浙公网安备 33010602011771号