scrapy 非空范围重复显示为空

ibps3vxo  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(109)

我试图查看一个类似于“http://nutritiondata.self.com/facts/snacks/1/1“的页面,由于某种原因,尽管我能够找到我想读的span,但scrapy返回了一个空span。
目前我的xpath代码如下:

hxs = HtmlXPathSelector(response)
calorieSpan = hxs.select("//span[@id='KJ_NUTRIENT_1']/text()").extract()

这会重复传回空清单。如果我移除“/text()”调用,则返回的span为<span id="KJ_NUTRIENT_1></span>。当我转到该页面时,该span是存在的,但它已被填充。您对为什么它显示为空白到scrapy有什么想法吗?有没有可能这些值是在页面加载时由javascript加载的?如果是这样,我该如何检查?如果是这样,我可以很容易地切换到casperjs,但由于它要慢得多,我宁愿不用。
有什么想法?

klsxnrf1

klsxnrf11#

由于这两个变量被标记为pythonweb-scraping,让我们看看十年后在python中实现这一点的方法:

import undetected_chromedriver as uc
browser = uc.Chrome()

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support import expected_conditions as EC

url = 'http://nutritiondata.self.com/facts/snacks/1/1'

browser.get(url)

calories = WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.ID, "KJ_NUTRIENT_1")))
print('Better late than never:', calories.text)
browser.quit()

结果:

Better late than never: (0.4 kJ)

相关问题