你好,我有一个使用Python和Selenium的脚本,我不明白为什么这不能检索网站的JS部分(同样的脚本在我的另一台机器上运行得很好):
import chromedriver_binary
from bs4 import BeautifulSoup
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("window-size=1024,768")
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--enable-javascript")
url = "https://deliveroo.co.uk/restaurants/london/holborn?geohash=gcpvj6kxet58&collection=pizza"
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get(url)
soup = BeautifulSoup(driver.page_source, "lxml")
show_data = soup.find_all("script", id="__NEXT_DATA__")
mydata = json.loads( show_data[0].text )
我得到了以下错误,这意味着它无法看到JSON的这一部分:
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
我不太确定为什么这能在我的另一台机器上工作,而不能在我现在的机器上工作。
发布于 2021-06-04 10:16:58
.text
属性在这里不起作用。为了获得正确的数据,我使用了encode_contents()
,只需像这样更改mydata
的定义:
mydata = json.loads( show_data[0].encode_contents())
https://stackoverflow.com/questions/67834474
复制相似问题