【问题标题】:Data missing while scraping website抓取网站时数据丢失
【发布时间】:2018-07-21 20:52:37
【问题描述】:

我正在尝试废弃一个网站(请参阅代码中的网址)。 从网站上,我正在尝试删除所有信息并将数据传输到 json 文件。

scrapy shell http://www.narakkalkuries.com/intimation.html

从网站中提取信息

response.xpath('//table[@class="MsoTableGrid"]/tr/td[1]//text()').re(r'[0-9,-/]+|[0-9]+')

我能够从网站上检索大部分信息。

关注: 能够在“提示”下删除数据,预计“2017 年 9 月的提示”无法在此选项卡下删除信息。

发现:

对于“Intimation For September 2017”,值存储在 span 标签中

/html/body/div[4]/div[2]/div/table/tbody/tr[32]/td[1]/table/tbody/tr[1]/td[1]/p/b/span

剩余月份的值存储在字体标签中

/html/body/div[4]/div[2]/div/table/tbody/tr[35]/td[1]/table/tbody/tr[2]/td[1]/p/b/span/font

如何提取“Intimation For September 2017”的信息?

【问题讨论】:

    标签: web-scraping scrapy scrapy-shell


    【解决方案1】:

    您的表使用不同的@classMsoTableGridMsoNormalTable),因此您需要一些方法来处理所有这些表:

    for table in response.xpath('//table[@width="519"]'):
        for row in table.xpath('./tr[position() > 1]'):
            for cell in row.xpath('./td'):
                #you can stringify value
                cell_value = cell.xpath('string(.)').extract_first()
    

    【讨论】:

    • 非常感谢您帮助我指出它是不同的表 "MsoTableGrid" 和 "MsoNormalTable' 。我对现有 Xpath "response.xpath('//table[@class= "MsoTableGrid" 或 @class= "MsoNormalTable"]/tr/td[1]//text()').re(r'[0-9,-/]+|[0-9]')" 现在我能够检索所需值的值
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    • 2018-09-16
    • 2019-08-15
    • 1970-01-01
    • 2014-07-06
    相关资源
    最近更新 更多