scrapy提取html示例

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 request

xpath 在对已经提取出来的结果进行二次解析时,容易犯错;
原因:因为通过xpath第一次解析出来的结果是一个elements(他自带的类型)
第二次解析的时候还是使用的是"/" ,那就是错误的,因为它的意思代表的是根目录解析(只对第一次转成html有效果)
xpath的elements对象进行解析时,不用加 / 解析,直接解析就行

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注