Scrapy Shell
使用下面的命令使用scrapy shell 并提取网页内容
1 | scrapy shell 'http://quotes.toscrape.com/page/1/' |
一、 css选择器(返回的是一个数组)
- response.css(‘title’)
[<Selector xpath='descendant-or-self::title' data='<title>Quotes to Scrape</title>'>]
- response.css(‘title’).extact() # 返回一个数组
['<title>Quotes to Scrape</title>']
- response.css(‘title’).extract_first() # 提取数组里面的字符串
'<title>Quotes to Scrape</title>'
- response.css(‘title’)[0].extract() # 作用和3一致,当数组为空,会报数组下标异常
'<title>Quotes to Scrape</title>'
- response.css(‘title::text’).extract() # 提取title标签下的内容
['Quotes to Scrape']
二、 命令行工具
Scrapy是要通过scrapy命令行工具控制的,在这里被称为“Scrapy工具”。
查看所有可用的命令scrapy -h
有两种类型的命令,分为全局命令和仅限于项目的命令
全局命令
- startproject
- genspider
- settings
- runspider
- shell
- fetch
- view
- version
仅限于项目的命令
- crawl
- check
- list
- edit
- parse
- bench
genspider
选择创建的模板
scrapy genspider -l
scrapy genspider test test
scrapy genspider -t crawl scrapyorg scrapy.org
三、xpath选择器(返回selectorList)
打开链接,并进入Scrapy shell1
scrapy shell 'https://doc.scrapy.org/en/latest/_static/selectors-sample1.html'
提取title信息
1
2response.xpath('//title/text()')
Out[4]: [<Selector xpath='//title/text()' data='Example website'>]获取图片目录信息
1
2
3
4
5
6
7response.xpath('//img/@src').extract()
Out[10]:
['image1_thumb.jpg',
'image2_thumb.jpg',
'image3_thumb.jpg',
'image4_thumb.jpg',
'image5_thumb.jpg']
1 | response.xpath('//a[contains(@href, "image")]/@href').extract() |
Selector也有.re()使用正则表达式提取数据的方法。但是,与使用.xpath()或 .css()方法不同,.re()返回unicode字符串的列表。所以你不能构建嵌套.re()调用。1
2
3
4
5
6response.xpath('//a[contains(@href, "image")]/text()').re(r'Name:\s*(.*)')
[u'My image 1',
u'My image 2',
u'My image 3',
u'My image 4',
u'My image 5']
.re_first()获取数组的第一个元素1
2response.xpath('//a[contains(@href, "image")]/text()').re_first(r'Name:\s*(.*)')
u'My image 1'
点关注,不迷路
好了各位,以上就是这篇文章的全部内容了,能看到这里的人呀,都是人才。
白嫖不好,创作不易。各位的支持和认可,就是我创作的最大动力,我们下篇文章见!
如果本篇博客有任何错误,请批评指教,不胜感激 !
原文作者: create17
原文链接: https://841809077.github.io/2018/05/26/Scrapy/Scrapy-Shell.html
版权声明: 转载请注明出处(码字不易,请保留作者署名及链接,谢谢配合!)