我正在尝试抓取一个页面,其中某些站点的H-Tag正常,而其他站点的H-Tag中还有其他Tag。
一些例子:
<h1>Text</h1>
<h1><a href="">Text</a></h1>
<h1><span>Text</span></h1>
<h1><span>Text</span><span>Text2</span></h1>
and many more...
我必须自己为每一个html标签写一张支票,还是有一种很好的抓取方式?
一种讨厌和不需要的方式是:
h1 = response.xpath('//h1').extract()
if '<a' in h1[0]:
h1 = json.dumps(response.xpath('//h1/a/text()').extract(), ensure_ascii=False)
elif '<span' in h1[0]:
h1 = json.dumps(response.xpath('//h1/span/text()').extract(), ensure_ascii=False)
else:
h1 = json.dumps(response.xpath('//h1/text()').extract(), ensure_ascii=False)
答案 0 :(得分:1)
有一种从XPath使用string()
的好方法:
response.xpath('string(//h1)').extract_first()
答案 1 :(得分:0)
Scrapy与此无关,但您正在使用的查询语言。
使用XPath,这将起作用:
response.xpath('//h1//text()').extract_first()