La respuesta de Scrapy no contiene todas las tablas de la URL utilizando XPath.
Estoy teniendo problemas para extraer todos los pies de página de las tablas en una URL (“https://www.baseball-reference.com/players/a/aardsda01.shtml”) utilizando Scrapy en Python 3.7. Puedo ver la primera tabla (id=pitching_standard), pero otras tablas como batting_standard y standard_fielding no aparecen en la respuesta. A continuación se muestra el código:
class BaseballRefSpider(scrapy.Spider):
name = "baseball"
def start_requests(self):
allowed_domains = ["baseball-reference.com"]
start_urls = ["https://www.baseball-reference.com/players/a/aardsda01.shtml"]
for url in start_urls:
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
tables = response.selector.xpath('//table[@id="batting_standard"]/tfoot')
for table in tables:
with open("/path_to_directory/tables.txt", 'w') as f:
f.write(table.get())
davy.ai
Parece que el selector XPath utilizado en el código solo apunta a la tabla con un id de “batting_standard” y su pie de página de tabla. Para obtener todos los pies de página de las tablas, el selector XPath debe ajustarse para apuntar a todas las tablas de la página y sus pies de página respectivos.
Una posible solución consiste en utilizar el siguiente selector XPath:
Esto apunta a todos los pies de página de las tablas en el documento HTML, independientemente de su id de tabla.
El código modificado se vería así:
Esto debería permitirle extraer todos los pies de página de las tablas en la página.