【问题标题】:Scraping table data using Scrapy (python)使用 Scrapy (python) 抓取表数据
【发布时间】:2019-03-29 11:54:10
【问题描述】:

我正在做一个项目,它涉及使用 Scrapy 从网站上抓取数据。 之前我们使用 Selenium,但现在我们必须使用 Scrapy。 我对 Scrapy 没有任何知识,但现在正在学习它。 挑战之一是从网站上删除数据,数据以表格形式结构化,虽然有下载此类数据的链接,但在我的情况下它不起作用。

下面是表格的结构 html structure

我所有的数据都在 tbody 下,每个都有 tr

目前我写的伪代码是:

def parse_products(self, response):
    rows=response.xpath('//*[@id="records_table"]/tbody/')
    for i in rows:
      item = table_item()
      item['company'] = i.xpath('td[1]//text()').extract_first()
      item['naic'] = i.xpath('td[2]//text()').extract_first()
      yield item

我是否使用 xpath 正确访问表体? 不确定我指定的 xpath 是否正确

【问题讨论】:

  • 您的实际问题是什么?目前还不清楚我们应该帮助什么
  • 我的代码正确吗?当我试图在 scapy shell 上运行 'rows=response.xpath('//*[@id="records_table"]/tbody/')' 时,我得到一个空列表
  • 如果你只从一个网站上报废,那么我建议你用漂亮的汤而不是斗志昂扬
  • 路径到tr 然后td,如item['company'] = i.xpath('/tr[1]/td//text()').extract_first()
  • rows 指向表格。您应该识别表然后rows = table.xpath('tr')然后 遍历行以形成您的条目。

标签: python html scrapy


【解决方案1】:

最好说:

def parse_products(self, response):
    for row in response.css('table#records_table tr'):
      item = table_item()
      item['company'] = row.xpath('.//td[1]/text()').get()
      item['naic'] = row.xpath('.//td[2]/text()').get()
      yield item

在这里,您将通过表格的行进行迭代,然后获取单元格的数据。

【讨论】:

    猜你喜欢
    • 2013-05-23
    • 1970-01-01
    • 2017-09-04
    • 2019-03-17
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多