标签:api 输出 第一个 base adb list unicode 实现 selector
Selector有四个基本的方法,最常用的还是xpath:
xpath(): 传入xpath表达式,返回该表达式所对应的所有节点的selector list列表
extract(): 序列化该节点为Unicode字符串并返回list
css(): 传入CSS表达式,返回该表达式所对应的所有节点的selector list列表,语法同 BeautifulSoup4
re(): 根据传入的正则表达式对数据进行提取,返回Unicode字符串list列表
Scrapy Shell根据下载的页面会自动创建一些方便使用的对象,例如 Response 对象,以及 Selector 对象 (对HTML及XML内容)。
当shell载入后,将得到一个包含response数据的本地 response 变量,输入 response.body将输出response的包体,输出 response.headers 可以看到response的包头。
输入 response.selector 时, 将获取到一个response 初始化的类 Selector 的对象,此时可以通过使用 response.selector.xpath()或response.selector.css() 来对 response 进行查询。
Scrapy也提供了一些快捷方式, 例如 response.xpath()或response.css()同样可以生效(如之前的案例)。
─$ scrapy shell "https://www.manhuadb.com/"
#返回xpath对象列表
In [4]: response.xpath(‘//h2‘).xpath(‘./text()‘)
Out[4]:
[<Selector xpath=‘./text()‘ data=‘辉夜姬想让人告白~天才们的恋爱头脑战~‘>,
<Selector xpath=‘./text()‘ data=‘魔王奶爸(恶魔奶爸)‘>,
<Selector xpath=‘./text()‘ data=‘ZETMAN 超魔人‘>,
<Selector xpath=‘./text()‘ data=‘盾之勇者成名录‘>,
<Selector xpath=‘./text()‘ data=‘东京食尸鬼re(东京喰种re)‘>,
<Selector xpath=‘./text()‘ data=‘关于我转生变成史莱姆这档事‘>,
<Selector xpath=‘./text()‘ data=‘辉夜姬想让人告白~天才们的恋爱头脑战~‘>,
<Selector xpath=‘./text()‘ data=‘魔王奶爸(恶魔奶爸)‘>,
<Selector xpath=‘./text()‘ data=‘ZETMAN 超魔人‘>,
<Selector xpath=‘./text()‘ data=‘盾之勇者成名录‘>,
<Selector xpath=‘./text()‘ data=‘东京食尸鬼re(东京喰种re)‘>,
...
#返回的selector列表
In [5]: s1 = response.xpath(‘//h2‘).xpath(‘./text()‘)
In [6]: s1[1].extract()
Out[6]: ‘魔王奶爸(恶魔奶爸)‘
In [7]: type(s1)
Out[7]: scrapy.selector.unified.SelectorList
In [8]: s1
Out[8]:
[<Selector xpath=‘./text()‘ data=‘辉夜姬想让人告白~天才们的恋爱头脑战~‘>,
<Selector xpath=‘./text()‘ data=‘魔王奶爸(恶魔奶爸)‘>,
<Selector xpath=‘./text()‘ data=‘ZETMAN 超魔人‘>,
<Selector xpath=‘./text()‘ data=‘盾之勇者成名录‘>,
<Selector xpath=‘./text()‘ data=‘东京食尸鬼re(东京喰种re)‘>,
<Selector xpath=‘./text()‘ data=‘关于我转生变成史莱姆这档事‘>,
<Selector xpath=‘./text()‘ data=‘辉夜姬想让人告白~天才们的恋爱头脑战~‘>,
<Selector xpath=‘./text()‘ data=‘魔王奶爸(恶魔奶爸)‘>,
<Selector xpath=‘./text()‘ data=‘ZETMAN 超魔人‘>,
<Selector xpath=‘./text()‘ data=‘盾之勇者成名录‘>,
<Selector xpath=‘./text()‘ data=‘东京食尸鬼re(东京喰种re)‘>,
<Selector xpath=‘./text()‘ data=‘关于我转生变成史莱姆这档事‘>,
<Selector xpath=‘./text()‘ data=‘漫画‘>,
<Selector xpath=‘./text()‘ data=‘漫画‘>,
<Selector xpath=‘./text()‘ data=‘漫画‘>,
...]
# 选中所有的img
>>> response.css(‘img‘)
# 选中所有base和title
>>> response.css(‘base,title‘)
# div 后代中的img
>>> response.css(‘div img‘)
# body 子元素中的div
>>> response.css(‘body>div‘)
# 选中包含style属性的元素
>>> response.css(‘[style]‘)
# 选中属性id值为images-1的元素
>>> response.css(‘[id=images-1]‘)
# 选中每个div的第一个a
>>> response.css(‘div>a:nth-child(1)‘)
# 选中第二个div的第一个a
>>> response.css(‘div:nth-child(2)>a:nth-child(1)‘)
response.css(‘a::text‘)
本章学习了从页面中提取数据的相关内容,首先带大家了解了
Scrapy中的Selector对象,然后学习如何使用Selector对象在页面
中选中并提取数据,最后通过一系列例子讲解了XPath和CSS选择器
的用法。
标签:api 输出 第一个 base adb list unicode 实现 selector
原文地址:https://www.cnblogs.com/dglyf/p/14498835.html