scrapy提取html示例
选择器有四种基本类型:
- 
Selector有四个基本的方法: 
- 
xpath():参数是xpath表达式,也就是类似于上面例子中的表达式, 
- 
css():输入css表达式; 
- 
extract():序列化该节点为unicode字符串并返回list; 
- 
re():输入正则表达式,返回unicode字符串list列表; 
import scrapy
class LinkCheckerSpider(scrapy.Spider):
    name = 'link_checker'
    allowed_domains = ['www.example.com']
    start_urls = ['http://www.example.com/']
    def parse(self, response):
        """ Main function that parses downloaded pages """
        # 打印spider正在进行的事务
        print(response.url)
        # 获取所有<a>标签
        a_selectors = response.xpath("//a")
        # 对每个标签进行循环操作
        for selector in a_selectors:
            # 解析出链接的文本
            text = selector.xpath("text()").extract_first()
            # 解析出链接的网址
            link = selector.xpath("@href").extract_first()
            # 创建一个新的Request对象
            request = response.follow(link, callback=self.parse)
            # 基于生成器返回该对象
            yield requestxpath 在对已经提取出来的结果进行二次解析时,容易犯错;
原因:因为通过xpath第一次解析出来的结果是一个elements(他自带的类型)
第二次解析的时候还是使用的是"/" ,那就是错误的,因为它的意思代表的是根目录解析(只对第一次转成html有效果)
xpath的elements对象进行解析时,不用加 / 解析,直接解析就行