Scrapy框架——shell
环境ubuntuscrapyipython为什么要使用 scrapy shell?Scrapy终端是一个交互终端,供您在未启动spider的情况下尝试及调试您的爬取代码。 其本意是用来测试提取数据的代码,不过您可以将其作为正常的Python终端,在上面测试任何的Python代码。该终端是用来测试XPath或CSS表达式,查看他们的工作方式及从爬取的网页中提取的数据。 在编写您...
·
环境
- ubuntu
- scrapy
- ipython
为什么要使用 scrapy shell?
Scrapy终端是一个交互终端,供您在未启动spider的情况下尝试及调试您的爬取代码。 其本意是用来测试提取数据的代码,不过您可以将其作为正常的Python终端,在上面测试任何的Python代码。
该终端是用来测试XPath或CSS表达式,查看他们的工作方式及从爬取的网页中提取的数据。 在编写您的spider时,该终端提供了交互性测试您的表达式代码的功能,免去了每次修改后运行spider的麻烦。
一旦熟悉了Scrapy终端后,您会发现其在开发和调试spider时发挥的巨大作用。
怎么使用 scrapy shell?
- 使用命令进入 scrapy shell "需要访问的地址"
- 使用命令:response (查看目标状态响应状态)
- 提取数据:response.xpath('xxx').extract()
- 改变抓取url:fetch(url)
- 推出:exit()
补充
- 抓取url返回403,可能是没有加报头,利用-s参数,如下所示:
scrapy shell -s USER_AGENT='Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1
)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'
- 常用选择器
- response.xpath
- response.css
- response.selector.re
- 解析出来是一个selector对象,需要用extract()方法转成list。
- xpath解析常用函数
- text():匹配当前节点直系内的文本
- string():匹配当前节点内所有文本
- contains (): //div[contains(@id,'in')] ,表示选择所有id中包含有’in’的div节点
- starts-with(): //div[starts-with(@id,'in')] ,表示选择以’in’开头的id属性的div节点
更多推荐
已为社区贡献5条内容
所有评论(0)