Web scraping 抓取网站时数据丢失

Web scraping 抓取网站时数据丢失,web-scraping,scrapy,scrapy-shell,Web Scraping,Scrapy,Scrapy Shell,我正在尝试废弃一个网站(请参考代码中的URL)。 在这个网站上,我试图删除所有信息,并将数据传输到json文件 scrapy shell http://www.narakkalkuries.com/intimation.html 从网站中提取信息 response.xpath('//table[@class="MsoTableGrid"]/tr/td[1]//text()').re(r'[0-9,-/]+|[0-9]+') 我能够从网站上检索到大部分信息 关注点: 可以取消“通知”下的数据,

我正在尝试废弃一个网站(请参考代码中的URL)。 在这个网站上,我试图删除所有信息,并将数据传输到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月通知”除外,不能取消此选项卡下的信息

查找:

对于“2017年9月通知”,该值存储在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

如何提取“2017年9月通知”的信息?

您的表使用不同的
@class
MsoTableGrid
MsoNormalTable
),因此您需要某种方法来处理所有这些信息:

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]')现在我能够检索到所需值的值