簡體   English   中英

Select css 選擇器使用美湯

[英]Select css selector using beautiful soup

我正在使用 html 請求和漂亮的湯(我是新手)開發一個網絡爬蟲。 對於多個網頁,例如( https://www.selfridges.com/GB/en/cat/hermes-rose-herms-silky-blush-6g_R03752945/?previewAttribute=32%20Rose%20Pommette )我正在嘗試獲取圖像鏈接,對於多個網頁來說總是相同的。 HTML 是:

<img class="c-image-gallery__img" src="//images.selfridges.com/is/image/selfridges/R03752945_32ROSEPOMMETTE_M?$PDP_M_ZOOM$" loading="lazy">

我嘗試使用 CSS 選擇器:

r = scraper.get(link)
soup = BeautifulSoup(r.content, 'lxml')
imagelink = soup.select('body > section > section.c-product-hero.--multiple-product-shot > div.c-product-hero__product-shots.c-image-gallery > div > picture:nth-child(1) > img')

返回None

或查找全部:

soup.find_all('img')

但具體鏈接不在列表中。 我不確定這是為什么。 任何幫助,將不勝感激

您嘗試抓取的此頁面使用 Cloudflare,它具有某種防止被抓取的保護。 服務器返回“403 Forbidden”HTTP 狀態碼。 一些網站使用大量 javascript,如果沒有支持 javascript 的瀏覽器,這些網站也很難抓取。 我建議您使用不同的技術,例如Puppeteer

from bs4 import BeautifulSoup
import requests

link = "https://www.selfridges.com/GB/en/"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36 OPR/75.0.3969.171"}

page = requests.get(link, headers=headers)
print(page.status_code)
print(page.text)

soup = BeautifulSoup(page.text, "lxml")
soup_imgs = soup.find_all("img")
for img in soup_imgs:
    print(img)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM