我正在使用python以及scrapy和selenium。我想从div类中的h1标签中提取文本。 例如:
<div class = "example">
<h1>
This is an example
</h1>
</div>
这是我尝试过的代码:
for single_event in range(1,length_of_alllinks):
source_link.append(alllinks[single_event])
driver.get(alllinks[single_event])
s = Selector(response)
temp = s.xpath('//div[@class="example"]//@h1').extract()
print temp
title.append(temp)
print title
每次我尝试不同的方法时,我都会得到一个空列表。
现在,我想提取“这是一个例子”,即h1文本并将其存储或附加到列表中,即在我的示例标题中。 喜欢: temp = ['这是一个例子']
答案 0 :(得分:3)
尝试以下操作以提取预期文本:
s.xpath('//div[@class="example"]/h1/text()').extract()
答案 1 :(得分:1)
有一次,似乎在你的HTML中,class属性是“example”,但在你的代码中你正在寻找其他类值;至少对于XPath查询,请记住,您通过完全属性值进行搜索。你可以使用类似的东西:
s.xpath('//div[contains(@class, "example")]')
要查找具有“example”类但可能包含其他类的元素。我不确定这是不是错误,或者这是你的实际代码。此外,您在HTML中围绕class属性的'='符号包含空格的事实可能也无助于某些解析器。
其次,s.xpath
中使用的查询似乎有误。尝试这样的事情:
temp = s.xpath('//div[@class="example"]/h1').extract()
从代码中不清楚s
是什么,所以我假设extract()
方法做了你认为的做法。也许更干净的代码示例可以帮助我们。