由于我認為存在但在從 Bs4 抓取的 html 中不存在的標簽而遇到錯誤時,我試圖抓取該網站。
網站:https ://en.thejypshop.com/category/cdlp/59/
我手動驗證了來自 Bs4 的決議輸出給我的 html 視圖與我檢查站點本身時完全不同;這是兩者的比較(復制了兩個pastebin鏈接中的相關html)。我還嘗試使用不同的決議選項進行抓取,例如“lxml”、“html.parser”等,但無濟于事。
(Bs4 輸出):https ://pastebin.com/tg4P5DFh
<div >
<div >
<a href="/product/stray-kids-mini-album-maxident-case-ver/842/category/59/display/2/" name="anchorBoxName_842">
<img alt="驗證網站的 Bs4 決議輸出" id="eListPrdImage842_2" src="https://cafe24img.poxo.com/jyp3602022/web/product/medium/202210/ca01b08c39232296f482b657be53aa4b.jpg" />
</a>
<span >
<img alt="驗證網站的 Bs4 決議輸出" categoryno="59" icon_status="off" individual-set="F" login_status="F" productno="842" src="/web/upload/icon_202204271744355800.png" />
</span>
</div>
<div >
<div ></div>
<div >
<div ></div>
<img alt="驗證網站的 Bs4 決議輸出" onclick="category_add_basket('842','59', '2', 'A0000', false, '1', 'P0000BGK', 'B', 'T', '20');" src="/web/upload/icon_202204271744303700.png" />
<img alt="驗證網站的 Bs4 決議輸出" onclick="zoom('842', '59', '2','', '');" src="//img.echosting.cafe24.com/design/skin/admin/en_US/btn_prd_zoom.gif" style="cursor:pointer" />
</div>
</div>
</div>
(來自網站的 html):https ://pastebin.com/2xfi4XTA
<div >
<div >
<a href="/product/stray-kids-mini-album-maxident-case-ver/842/category/59/display/1/">
<img src="https://cafe24img.poxo.com/jyp3602022/web/product/medium/202210/ca01b08c39232296f482b657be53aa4b.jpg" id="eListPrdImage842_1" alt="驗證網站的 Bs4 決議輸出">
</a>
</div>
<span >
<img src="/web/upload/icon_202204271744355800.png" alt="驗證網站的 Bs4 決議輸出" productno="842" categoryno="59" icon_status="off" login_status="F" individual-set="F">
<img src="/web/upload/icon_202204271744303700.png" onclick="category_add_basket('842','59', '1', 'A0000', false, '1', 'P0000BGK', 'B', 'T', '20');" alt="驗證網站的 Bs4 決議輸出" >
</span>
<span ></span>
</div>
請注意,<span ></span>標簽不會出現在 Bs4 看到的內容中。
我猜為什么會這樣;
- 我沒有使用無頭瀏覽器,所以像這個這樣的一些網站可能不會顯示相同的內容。
- 后臺運行了一些 Bs4 無法識別的 JS
如果我的任何猜測不正確以及實際發生了什么,請告訴我!
uj5u.com熱心網友回復:
是的,您是對的,因為第二頁是動態構建的,因此您無法使用 bs4 獲得真正的 html。嘗試使用 selenium 和 bs4 的組合來獲得你需要的東西。這是一個小腳本,可以找到一些隱藏的 div 并將它們列印出來。當頁面完全開發時,您應該獲得更深入的了解并模擬網上沖浪以捕獲 html。下面這個還在建設中。
import time
from bs4 import BeautifulSoup
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors')
options.add_argument('--incognito')
options.add_argument('--headless')
driver = webdriver.Chrome(options = options)
urls = ['https://en.thejypshop.com/category/cdlp/59/', 'https://pastebin.com/2xfi4XTA']
for url in urls:
data = driver.get(url)
time.sleep(1)
pg_html = driver.page_source
pg_html = pg_html.replace('<', '<').replace('>', '>')
soup = BeautifulSoup(pg_html, 'html.parser')
dv = soup.find_all('div', attrs={'class': 'thumbnail'})
dv1 = soup.find_all('span', attrs={'class': 'soldout_icon'})
try:
print(60 * '-')
print(dv[0])
except:
pass
print(60 * '-')
try:
print(dv1[0])
print(60 * '-')
except:
pass
''' R e s u l t :
------------------------------------------------------------
<div >
<div >
<a href="/product/stray-kids-mini-album-maxident-case-ver/842/category/59/display/2/" name="anchorBoxName_842"><img alt="驗證網站的 Bs4 決議輸出" id="eListPrdImage842_2" src="https://cafe24img.poxo.com/jyp3602022/web/product/medium/202210/ca01b08c39232296f482b657be53aa4b.jpg"/></a>
<span ><img alt="驗證網站的 Bs4 決議輸出" categoryno="59" icon_status="off" individual-set="F" login_status="F" productno="842" src="/web/upload/icon_202204271744355800.png"/></span>
</div>
<div >
<div > </div>
<div >
<div ></div> <img alt="驗證網站的 Bs4 決議輸出" onclick="category_add_basket('842','59', '2', 'A0000', false, '1', 'P0000BGK', 'B', 'T', '20');" src="/web/upload/icon_202204271744303700.png"/> <img alt="驗證網站的 Bs4 決議輸出" onclick="zoom('842', '59', '2','', '');" src="//img.echosting.cafe24.com/design/skin/admin/en_US/btn_prd_zoom.gif" style="cursor:pointer"/> </div>
</div>
</div>
------------------------------------------------------------
<span ></span>
------------------------------------------------------------
------------------------------------------------------------
<div >
</div>
------------------------------------------------------------
<span ></span>
------------------------------------------------------------
'''
問候...
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/519404.html
標籤:网页抓取美丽的汤
