由于爬取目标网站时,get数据返回的是一个json格式的结构,要对子字段中的html字符串进行xpath解析,这时不能使用response.xpath(或者说是有别的方式,我不知道..),而是对response.text的下面的子字段进行解析,此时只能重新实例化xpath,想问下这个在实际项目中算是正确的处理方式吗?
由于爬取目标网站时,get数据返回的是一个json格式的结构,要对子字段中的html字符串进行xpath解析,这时不能使用response.xpath(或者说是有别的方式,我不知道..),而是对response.text的下面的子字段进行解析,此时只能重新实例化xpath,想问下这个在实际项目中算是正确的处理方式吗?
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等库搭配使用.
1 回答10k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
3 回答4.7k 阅读
4 回答1.7k 阅读✓ 已解决
3 回答1.7k 阅读✓ 已解决
4 回答1.8k 阅读✓ 已解决
2 回答1.8k 阅读✓ 已解决
一般来说, scrapy 自带的 xpath 和 css 选择器已经足够, 不需要其他的 html/xhtml 解析器了, 例如 etree 或 bs4.
对于 json 内容, 可以直接调用 json.loads() 进行解析, 如
将来 scrapy 也可能会自带 .json() 方法(与 requests 库类似).
参考
https://docs.scrapy.org/en/la...
https://github.com/scrapy/scr...