使用Selector提取数据
scrapy综合了BeautifulSoup和lxml两套http解析库的优点,实现了Selector类,它是基于lxml库构建的,并简化了API接口。在使用时,先通过XPath或者CSS选择器选中页面中要提取的数据,然后进行数据的提取。
创建selector对象
创建selector对象时,可以将HTML文档字符串传递给selector构造器方法的text参数。
from scrapy.selector import Selector
text = '''
<html>
<body>
<h1> </h1>
<h1> </h1>
....
</body>
</html>
'''
selector = Selector(text = text)
也可以使用一个Response对象构造Selector对象,将其传递给Selector构造器方法的response参数。
selector = Selector(response = response)
选中数据
调用Selector对象的XPath或CSS方法(传入XPath或CSS选择器表达式),可以选中HTML文档中的数据。
XPath和CSS方法返回一个SelecteorList对象,其中包含每个被选中的Selector对象,可以使for语句迭代访问其中的每个Selector对象。
selector_list = selector.xpath(’//h1’)
其中selector_list对象也有xpath和css方法。调用他们的行为是分别调用迭代对象中的每个对象使用XPath和css方法后返回一个新的可迭代对象SelectorList。
提取数据
调用Selector或者SelectorList对象的
extract()
re()
extract_first()
re_first()
方法。