1回答

0收藏

scrapy中将str转为能xpath的html格式

信息分享 信息分享 2206 人阅读 | 1 人回复 | 2020-02-26

scrapy中将str转为能xpath的html格式
在scrapy获取资源时,有时候获取的是json格式,但是json里面存在着html的标签,这时候就可以将json转为字典,然后再将html标签拿到,然后再进行xpath,就可以获取到标签内的资源了;

但是,怎么将这里的str转为能xpath的html标签呢,这里就用到了Selector
from scrapy.selector import Selector
names = Selector(text=datas).xpath("//div[contains(@class,'jDesc')]/a/text()").get()
这里的datas就是获取到的json里面的str(html标签的字符串格式),将datas转为html标签,然后再进行xpath就可以了。

上一篇也是在纠结xpath格式化srt发现的一坑

https://bbs.nightteam.cn/thread-277.htm
分享到:
回复

使用道具 举报

信息分享 信息分享 2206 人阅读 | 1 人回复 | 2020-02-26

回答|共 1 个




scrapy中将str转为能xpath的html格式
在scrapy获取资源时,有时候获取的是json格式,但是json里面存在着html的标签,这时候就可以将json转为字典,然后再将html标签拿到,然后再进行xpath,就可以获取到标签内的资源了;

但是,怎么将这里的str转为能xpath的html标签呢,这里就用到了Selector
from scrapy.selector import Selector
names = Selector(text=datas).xpath("//div[contains(@class,'jDesc')]/a/text()").get()
这里的datas就是获取到的json里面的str(html标签的字符串格式),将datas转为html标签,然后再进行xpath就可以了。

上一篇也是在纠结xpath格式化srt发现的一坑

https://bbs.nightteam.cn/thread-277.htm
from scrapy.selector import Selector

def parse(self, response):
    for i in json.loads(response.text)['result']:    
        item = deepcopy(response.meta['item'])    
        div = Selector(text=i['div'])    # 与解析josn和xpath类似,只需要加入这句,即可和之前版本兼容
        item['title'] = i.get('Pname')
        item['url'] = div.xpath('//a[@target]/text()').get()
        yield deepcopy(item)


分享到:
回复

使用道具 举报