在实际scrapy项目中,使用xpath,是始终使用框架自带的xpath还是也会根据情况,使用etree.HTML重新实例化呢?

由于爬取目标网站时,get数据返回的是一个json格式的结构,要对子字段中的html字符串进行xpath解析,这时不能使用response.xpath(或者说是有别的方式,我不知道..),而是对response.text的下面的子字段进行解析,此时只能重新实例化xpath,想问下这个在实际项目中算是正确的处理方式吗?

阅读 3.4k
2 个回答

一般来说, scrapy 自带的 xpath 和 css 选择器已经足够, 不需要其他的 html/xhtml 解析器了, 例如 etree 或 bs4.

对于 json 内容, 可以直接调用 json.loads() 进行解析, 如

js = json.loads(response.body_as_unicode())
js['xxx']

将来 scrapy 也可能会自带 .json() 方法(与 requests 库类似).

参考

https://docs.scrapy.org/en/la...
https://github.com/scrapy/scr...

json获取的html片段可以用scrapy.selector下的Selector构造实例, 用xpath和css选择器解析

>>> from scrapy.selector import Selector
>>> body = '<html><body><span>good</span></body></html>'
>>> Selector(text=body).xpath('//span/text()').get()
'good'

还可以使用BeautifulSoup, lxml, pyquery等库搭配使用.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏