Python 从网站上抓取表格时出现问题?

Python 从网站上抓取表格时出现问题?,python,xpath,web-scraping,scrapy,scrapy-spider,Python,Xpath,Web Scraping,Scrapy,Scrapy Spider,我正在从这个站点提取表。虽然我匹配了XPath并发现了表中的字段,但我无法从站点中提取任何内容,这就是我的蜘蛛的样子: # -*- coding: utf-8 -*- import scrapy from table.items import TableItem class Table(scrapy.Spider): name = "table1" start_urls = ( 'wesite.com', ) #//div[4]//div[1]

我正在从这个站点提取表。虽然我匹配了XPath并发现了表中的字段,但我无法从站点中提取任何内容,这就是我的蜘蛛的样子:

# -*- coding: utf-8 -*-
import scrapy
from table.items import TableItem


class Table(scrapy.Spider):
    name = "table1"
    start_urls = (
        'wesite.com',
    )
    #//div[4]//div[1]//div[1]//table[1]
    #
    def parse(self, response):
        sites = response.xpath('//*[@id="tabs-1"]/table//tr')[1:-2]
        print('\n***********************************\n',sites)

        for site in sites:
            item = TableItem()
            item['col1'] = site.xpath('td[1]/text()').extract()
            item['col2'] = site.xpath('td[2]/text()').extract()
            yield item
            print('\n**********\n',item)
我想我的主要问题是这一行:

sites = response.xpath('//*[@id="tabs-1"]/table[1]/tr')

我实际上可以检索内容。但是,它有一个非常大的重复错误格式(格式不正确)。知道如何获取表格吗?

有时候浏览器在渲染时会添加自己的DOM元素。对于给定的站点,正确的xpath选择器是
response.xpath('//*[@id=“tabs-1”]/table//tr')
,用于查找表行

已编辑:添加了从表中获取正确元素的代码

# -*- coding: utf-8 -*-
import scrapy
from table.items import TableItem


class Table(scrapy.Spider):
    name = "table1"
    start_urls = (
        'http://www.accessdata.fda.gov/scripts/drugshortages/default.cfm#tabs-1',
    )

    def parse(self, response):
        sites = response.xpath('//*[@id="tabs-1"]/table//tr')

        for site in sites:
            item = TableItem()
            item['col1'] = site.xpath('td/a/text()').extract_first()
            col2 = site.xpath('td/em/strong/text()')
            if col2:
                item['col2'] = site.xpath('td/em/strong/text()')[0].extract().strip()
            else:
                item['col2'] = 'Not Available'
            yield item

我也在调查。给我2分钟我更新了答案以反映获取数据所需的代码打印
item['col1']
时会看到什么?哦。我已将答案中的
extract()
替换为
extract\u first()
。谢谢!,表面上。。我在
col2
中得到了几个
\n
知道如何删除它们吗?。