美文网首页技术文章python
XPath提取多个标签下的text

XPath提取多个标签下的text

作者: 向右奔跑 | 来源:发表于2016-05-16 21:16 被阅读12069次

    今天在用Python爬取简历时,想把教育经历,工作经历一起输出来,即提取标签及其子标签下(多个标签下)的text内容。

    XPath提取多个标签下的text内容

    网上搜到的基本都是这篇文章:

    xpath一次提取多个标签下的内容

    用的xpath string(.) 我试了一下,还是报错。不得已准备用迭代的方式取出内容。后来发现是selector.xpath('//xxxx')取出来的应该是集合,这个地方应该是写错误了,data要加上索引,即代码应该是:

       info = data[0].xpath('string(.)').extract()[0]
    

    果然,修改后就得到了所有的文本内容。

    再往文章上面看,作者写了一个tag:
    tags: [xpath,Python,xml,scrapy]

    是因为这仅仅是在scrapy下这样写的吗?正好这两天也在看scrapy,我就试着用scrapy抓取这段数据。

    简书上的文章信息

    发现仍是一样,xpath('xxx')取出的就是集合,下一次操作时要么使用迭代,要么加上索引操作。

    XPath提取数据块(结构性数据)的技巧

    选取点放在包含结构性数据循环的地方,即取决大的地方,再用xpath向内取数据。就是先抓大再抓小。

    如爬取简书上文章的信息,第一次selector要定在ul class="article-list thumbnails" 的li,<li></li>中包含的就是一篇文章的信息。(注意li 的样式有两种 have-img 即有缩略图的)

    文章列表html
    articles = selector.xpath('//ul[@class="article-list thumbnails"]/li')
    
        for article in articles:
            title = article.xpath('div/h4/a/text()').extract()
            url = article.xpath('div/h4/a/@href').extract()
            author = article.xpath('div/p/a/text()').extract()
    

    相关文章

      网友评论

      • Tianql:感谢,上次遇到过这个没解决,最后改用s4了。
      • SilbertMonaphia:你是用什么库的?lxml?
      • 8179b283882c:response.xpath('string(//div[@id="test3"])').extract()[0]
        就可以取出这个id下的所有文本了
      • 693c65b6abfa:同样 'list' object has no attribute 'extract'
      • 风景_e5fd:不啊 我用的scrapy 是用的网上搜到的那个方法。成功实现了的
      • 按时长大之1994:我这样写了为什么提示有错误
        说list没有属性extract
        请问错在哪? 谢谢
        风景_e5fd:同学你可以试试把data后面的[0]去掉

      本文标题:XPath提取多个标签下的text

      本文链接:https://www.haomeiwen.com/subject/tfgbrttx.html