gpt4 book ai didi

python - 从网站抓取表格时遇到问题?

转载 作者:太空宇宙 更新时间:2023-11-03 16:01:44 24 4
gpt4 key购买 nike

我正在从该网站提取表格。虽然我匹配了 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')

我实际上可以检索内容。然而,它有一个非常大的重复错误格式(它是畸形的)。知道如何获得 table 吗?

最佳答案

有时浏览器会在渲染时添加自己的 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

关于python - 从网站抓取表格时遇到问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40286349/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com