爬虫笔记(四) - 关于Scrapy页面信息定位

关于页面信息定位,我习惯用的方法有三种,这三种方法基本能通吃

  • css
  • xpath
  • re

推荐看一篇博客Python爬虫利器二之Beautiful Soup的用法
还可以去看Selectors官方文档
在定位同一个位置有多中解决方法,选择合适的才重要

xpath使用

假设有一段这样的html


 
  
  Example website
 
 
  
 

xpath('//title/text()').extract()
[u'Example website']

xpath('//base/@href').extract()
[u'http://example.com/']

xpath('//a[contains(@href, "image")]/@href').extract()
[u'image1.html',
 u'image2.html',
 u'image3.html',
 u'image4.html',
 u'image5.html']

xpath('//a[contains(@href, "image")]/img/@src').extract()
[u'image1_thumb.jpg',
 u'image2_thumb.jpg',
 u'image3_thumb.jpg',
 u'image4_thumb.jpg',
 u'image5_thumb.jpg']

xpath('//header/h1[1][@class="article-title"]/a/text()').extract()

代码要点:

  • text()
  • extract()
  • a[contains(@href, "image")]
  • h1[@class="article-title"]
  • @href和@src

在shell中使用

scrapy chell "www.baidu.com"

sel.xpath("使用上文中的xpath语法")

遇到的主要问题

  • 标签没有闭合,用re去匹配吧
用bs4去找zhang这个标签,但是没有闭合的情况下,定位不到这个位置
发布于 2017:05:07 发布于 2017:05:07
  • 标签无法定位,用re去匹配吧
即使闭合了,你发现没有id没有name没有class,也是很难定位的
发布于 2017:05:07 发布于 2017:05:07

针对定位问题,我会不断总结,将经验写进这个博客,持续更新中~~~

你可能感兴趣的:(爬虫笔记(四) - 关于Scrapy页面信息定位)