python - scrapy中没有xpath结果

标签 python html xpath scrapy

我正在使用这个代码。最后两个值是这样的,因为我正在测试它们中的任何一个是否会起作用 - 但它们不起作用。

def parse_again(self, response):
    sel = Selector(response)
    meta = sel.xpath('//div[@class="LWimg"]')
    items = []
    for m in meta:
        item = PageItem()
        item['link'] = response.url
        item['Stake'] = m.select('//div[@class="stakedLW"]/h1/text()').extract()
        item['Value'] = m.select('//p[@class="value"]/text()').extract()
        item['Value'] = m.select('//div[@class="value"]/span/span/text()').extract()
        items.append(item)
    return items

从此 html 源代码检索数据

   <div class="LWimg">               
            <div class="stakedLW">              
                <span class="title">Stake</span>
                <span class="value">5.00</span>
                <span class="currency">&#128;</span>

我的items.py看起来像这样

from scrapy.item import Item, Field

class Page(Item):
    Stake = Field()
    Value = Field()

问题是未检索数据,即最终没有将任何内容保存到 .csv 中。

欢迎任何意见。

最佳答案

您正在两次填充 Value 字段,因此只有最后一个才有效,我认为正确的方法应该是:

item['Value'] = response.xpath('//div[@class="stakedLW"]//span[@class="value"]/text()').extract_first()

其他字段不是必需的,只需 link 字段即可。

关于python - scrapy中没有xpath结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34028029/

相关文章:

python - 将多行代码片段粘贴到 IPython 中

html - 如何使用 flexbox 在中心底部对齐元素

C# 根据不需要的属性值列表从 XMLDocument 中删除整个元素

python - lxml etree 在之前找到最接近的元素

java - 相同节点,不同子节点 Selenium Xpath Java

python - 将数据传递给 subprocess.check_output

python - 将函数重新定义为自身的一部分——为什么非法?

python - Python 或 MySQL 中是否有一个内置函数可以返回一组 3 个经常出现的单词?

html - 如何限制内联显示的子 div 的数量?

javascript - 如何解决 UL 问题中的子元素