【发布时间】:2021-03-02 17:45:11
【问题描述】:
对于一个小组项目,我正在尝试在 https://www.basketball-reference.com/players/a/allenra02.html 中抓取 Salaries 表。
我尝试过多种 CSS 和 Xpath 选择器,例如
#all_salaries > tbody > tr:nth-child(1)
#all_salaries > tbody
#all_salaries > tbody > tr:nth-child(1) > td.right
#all_salaries
//*[@id="all_salaries"]/tbody/tr[1]/td[3]
//*[@id="all_salaries"]/tbody
//*[@id="all_salaries"]
代码如下:
def start_requests(self):
start_urls = ['https://www.basketball-reference.com/players/a/allenra02.html']
for url in start_urls:
yield scrapy.Request(url=url, callback=self.parse_season)
def parse_player(self, response):
response.css('#all_salaries > tbody)
我尝试将其打印出来,但它一直返回一个空列表。 其他表看起来都不错,除了这个。
编辑:
我的最终解决方案看起来像
regex = re.compile(r'<!--(.*)-->', re.DOTALL)
salaries = response.xpath('//*[@id="all_all_salaries"]/comment()').get()
if salaries:
salaries = response.xpath('//*[@id="all_all_salaries"]/comment()').re(regex)[0]
salaries_sel = scrapy.Selector(text=salaries, type="html")
all_salaries = salaries_sel.css('#all_salaries > tbody > tr').extract()
【问题讨论】:
-
嘿@JWiryo 你还有解决方案吗?看了下面给出的答案,它显示了如何获得评论,但我还没有弄清楚如何获得任何内容......
-
是的!让我编辑我的问题
-
感谢@JWiryo,由于您的编辑,我现在能够获得所需的内容
标签: python web-scraping scrapy