xpath - Scrapy:在Xpath中处理Abbr标签的问题

标签 xpath scrapy scrapy-spider

我对Scrapy有点陌生,我在处理abbr标签(或者更确切地说,我认为问题在于处理)时遇到了问题,但是我不确定100%正确。

我正在尝试从以下html中获取缩写名称:

<div class="meta">
        Post by: <a href="index.php?members/18862/" class="username" dir="auto">Eric</a>,
        <abbr title="Feb 13, 2016 at 1:45 PM" class="DateTime" data-time="1455389113" data-diff="3240" data-datestring="Feb 13, 2016" data-timestring="1:45 PM">54 minutes ago</abbr>
        in forum: <a href="index.php?forums/154/">Forum Games</a>
    </div>


我在这里处理的问题是当我对蜘蛛使用以下代码时:

def parse(self, response):
    for sel in response.xpath('//h3[@class="title"]'):
        item = ZqItem()
        item['user'] = sel.xpath('../../div[@class="meta"]/a[@class="username"]/text()').extract()
        item['date'] = sel.xpath('../../div[@class="meta"]/abbr[@class="DateTime"]/@title').extract()

        yield item


我无法获取日期(在Powershell中,草率地返回'date':[])。但是,用户返回的很好,让我认为这可能是abbr标签给我带来了问题。

另外,我尝试在不同但相似的html片段上使用我的代码,该片段的跨度代替了abbr,并且可以正常工作(成功返回标题)。 (但是请记住,html中还有其他一些不同之处,也许这是问题的原因吗?)

<div class="meta">
        Post by: <a href="index.php?members/18862/" class="username" dir="auto">Eric</a>,
        <span class="DateTime" title="Feb 4, 2016 at 9:37 AM">Feb 4, 2016</span>
        in forum: <a href="index.php?forums/8/">General</a>
    </div>


与蜘蛛一样:

def parse(self, response):
for sel in response.xpath('//h3[@class="title"]'):
    item = ZqItem()
    item['user'] = sel.xpath('../../div[@class="meta"]/a[@class="username"]/text()').extract()
    item['date'] = sel.xpath('../../div[@class="meta"]/span[@class="DateTime"]/@title').extract()

    yield item


谁能在这个问题上发表一些看法?谢谢!

最佳答案

假设日期不是使用javascript动态生成的。
您可以这样做:

def parse(self, response):
    for sel in response.xpath('//div[@class="meta"]/a[@class="username"]'):

        date = sel.xpath('../span[@class="DateTime"]/@title').extract()
        date += sel.xpath('../abbr[@class="DateTime"]/@title').extract()

        item = ZqItem()
        item['user'] = sel.xpath('./text()').extract()
        item['date'] = date

        yield item

关于xpath - Scrapy:在Xpath中处理Abbr标签的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35384669/

相关文章:

python - 如何让 scrapy 使用 url 迭代存档?

java - 以编程方式查找 selenium 的 webelements 定位器

php - 使用PHP和XPath进行屏幕抓取

python - scrapy xpath 如何

robots.txt - Scrapy 爬虫在 robots.txt 中遵守 Crawl-Delay 的最简单方法是什么?

python - 在没有有效响应之前无法一一使用代理

python-3.x - 如何使用 Selenium 和 Python 引用 HTML 中的文本来定位元素

python - scrapy xpath选择器重复数据

web-scraping - 尽管设置了 USER_AGENT,但 Scrapy Shell : twisted. internet.error.ConnectionLost

python - 在没有线程的情况下从另一个文件调用 Scrapy