精通scrapy网络爬虫 第三章———利用selector提取数据

创建对象

#创建Selector 对象

from scrapy.selector import Selector

text = '''

    
        

Hello World

Hello Scrapy

Hello World

  • C++
  • Java
  • Python
'''
selector=Selector(text=text) print(selector) # from scrapy.http import HtmlResponse body = '''

Hello World

Hello Scrapy

Hello World

  • C++
  • Java
  • Python
'''
response=HtmlResponse(url='http://example.com',body=body,encoding='utf-8') selector=Selector(response=response) print(selector) #

选中数据

#选中数据
selector_list=selector.xpath('//h1')
print(selector_list)   # 输出的是一个     的列表[<>,<>,<>]
#[,
# , ]


for sel in selector_list:
    print(sel.xpath('./text()'))
    # []
    # []
    # []

print(selector_list.xpath('./text()'))
#[,
# , ]

print(selector.xpath('//ul').xpath('//li').xpath('./text()'))    #书上xpath('.//ul')加了一个点,不加也可
print(selector.css('ul').css('li').xpath('./text()'))
# [, , ]
# [, , ]

提取数据

#提取数据
#extract()
s=selector.xpath('//li').xpath('./text()')
print(s)  #[, , ]
print(s.extract())   #['C++', 'Java', 'Python'],  extract()函数的功能是selector 对象列表中的data内容,并组成一个列表返回
print(s[1].extract())   #Java   书上给的是'C++'
print(s.extract()[0])   #C++

s1=selector.xpath('.//h1')
print(s1.extract_first())  #

Hello World

#re()方法,有时候我们使用正则表达式提取选中内容的某部分,可以使用re方法 text1 ='''
  • Python学习手册 价格: 99元’
  • Python核心编程 价格: 88元’
  • Python基础教程 价格: 77元’
'''
selector1=Selector(text=text1) s2=selector1.xpath('//ul//li//b/text()') print(s2) print(s2.extract()) print(s2.re('\d+\.\d+')) #有错,学完正则表达式再来 #[, , ] # ['价格: 99元’', '价格: 88元’', '价格: 77元’'] # []

Response内置Selector

# Response内置Selector
#通常,我们直接是同Response对象提供内置的Selector对象即可
response=HtmlResponse(url='http://example.com',body=body,encoding='utf-8')
selector=response.selector
response.xpath()
response.css()

你可能感兴趣的:(scrapy网络爬虫)