【问题标题】:Extract h1 text from div class with scrapy or selenium使用 scrapy 或 selenium 从 div 类中提取 h1 文本
【发布时间】:2015-08-01 13:39:45
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    尝试以下方法提取预期文本:

    s.xpath('//div[@class="example"]/h1/text()').extract()
    

    【讨论】:

      【解决方案2】:

      这一次,在您的 HTML 中,class 属性似乎是“示例”,但在您的代码中,您正在寻找其他类值;至少对于 XPath 查询,请记住您按 exact 属性值进行搜索。你可以使用类似的东西:

      s.xpath('//div[contains(@class, "example")]')
      

      查找具有“示例”类但可能具有其他类的元素。我不确定这是一个错误还是您的实际代码。此外,您在 HTML 中类属性的“=”符号周围有空格这一事实可能也对某些解析器没有帮助。

      其次,您在s.xpath 中使用的查询似乎是错误的。试试这样的:

      temp = s.xpath('//div[@class="example"]/h1').extract()
      

      从您的代码中不清楚s 是什么,所以我假设extract() 方法执行您认为的操作。也许更干净的代码示例会帮助我们帮助您。

      【讨论】:

      • 将尝试您提到的第二件事。你能解释一下什么是选择器(响应)吗?我在教程中看到过,但他们没有解释。问题是每次循环运行时加载新页面,我想要那个 div 类中的 h1 文本。那么 Selector(response) 代表什么?它返回什么?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-05
      • 1970-01-01
      • 2017-11-05
      • 2021-06-13
      • 2020-09-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多