使用scrapy或selenium从div类中提取h1文本

时间:2015-08-01 13:39:45

标签: python selenium-webdriver web-scraping scrapy scrapy-spider

我正在使用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 = ['这是一个例子']

2 个答案:

答案 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()方法做了你认为的做法。也许更干净的代码示例可以帮助我们。