慕桂英3389331
2023-08-08 17:32:02
我正在嘗試學(xué)習(xí)如何通過 python 腳本從互聯(lián)網(wǎng)獲取信息。這里是:import requestsfrom bs4 import BeautifulSoupurl = 'https://www.amazon.es/Poco-NFC-Smartphone-Punch-Hole-Quad-c%C3%A1mara/dp/B08B9C149J/ref=sr_1_3?__mk_es_ES=%C3%85M%C3%85%C5%BD%C3%95%C3%91&dchild=1&keywords=poco%2Bx3&qid=1600179415&quartzVehicle=16-179&replacementKeywords=poco&sr=8-3&th=1'headers ={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36'}page = requests.get(url, headers=headers)soup = BeautifulSoup(page.content, "html.parser")title = soup.find( id='productTitle').get_text()問題是,當(dāng)我應(yīng)該獲得在瀏覽器中看到的標(biāo)題時,我卻沒有得到 ID“productTitle”搜索的結(jié)果。有任何想法嗎?
3 回答

忽然笑
TA貢獻(xiàn)1806條經(jīng)驗 獲得超5個贊
id="productTitle"
這里的問題是響應(yīng)的內(nèi)容中不存在 的元素。您可以通過打開 Chrome 或其他瀏覽器中的“源”選項卡來驗證這一點。按 Ctrl+Shift+I 并單擊頁面頂部的“源”。展開www.amazon.es
及其下的文件夾。單擊該文件并按 Ctrl+F 并鍵入“productTitle”。沒有找到。
您還會看到該頁面有大量 JavaScript。當(dāng)該代碼在瀏覽器中運行時,很可能會將元素添加到 DOM。當(dāng)您使用 requests 和 BeautifulSoup 時,不會執(zhí)行此 JavaScript 代碼,因此您不會獲得與在瀏覽器中看到的完全相同的結(jié)果。

拉丁的傳說
TA貢獻(xiàn)1789條經(jīng)驗 獲得超8個贊
當(dāng)轉(zhuǎn)到代碼中提供的鏈接,然后在 HTML 代碼中手動搜索“productTitle”時,會出現(xiàn)三個結(jié)果。問題可能是您只是得到第一個結(jié)果,因此而不是實際的標(biāo)題。我猜你想要id=productTitle的跨度。嘗試使用
soup.find("span", id='productTitle').get_text()
添加回答
舉報
0/150
提交
取消