试图从某个网站上抓取产品价格用于竞争对手分析(与工作无关)



首先,如果这个问题被问了很多,或者看起来很简单,我道歉。但是,我对python是完全陌生的,不太了解。

有一个网站:wiggle.co.uk。我的目标是为我正在做的一个项目刮取产品的价格(和名称!)。我已经有一份给定产品(山地车)的清单和相应的价格。

我已经安装了python并准备开始编写脚本。

我已经检查了我想要抓取价格的网页(https://www.wiggle.co.uk/cycle/mountain-bikes),并找到了包含自行车名称和价格的代码块:

<a class="bem-product-thumb__name--grid" href="https://www.wiggle.co.uk/vitus-mythique-29-vrs-mountain-bike-2021" data-ga-label="Position 2" data-ga-action="Product Title">Vitus Mythique 29 VRS Mountain Bike (2021)</a>
<div class="bem-product-price--grid">
<span class="bem-product-price__unit--grid">&#163;1,649.99</span>
</div>

如果查看上述网页,可以在第3663行找到。

我遵循了一个从IMDB前250名中挑选前10名电影的教程。

我修改了代码以适应我的需要,如下所示:

Import requests
From bs4 import BeautifulSoup
Page = requests.get(https://www.wiggle.co.uk/cycle/mountain-bikes)
Soup = BeautifulSoup(page.content, ‘html.parser’)
Links = soup.select(“bem-product-thumb__name—grid”)
First48 = links[:48]
For anchor in first48:
Print(anchor.text)

我假设我没有使用正确的"链接",因为当试图运行代码时。我的问题是我应该如何检查网页,以提取正确的信息放入python代码。

我需要:

Vitus Mythique 29 VRS山地车(2021)

1649 .99

有人能帮忙吗?

感谢
import re
import requests
from bs4 import BeautifulSoup
page = requests.get("https://www.wiggle.co.uk/cycle/mountain-bikes")
soup = BeautifulSoup(page.content, "html.parser")
bikes = soup.select(".bem-product-thumb__name--grid")
currency_pattern = r"$d+,?d+.d+"
for bike in bikes:
name = bike.text
price = re.findall(currency_pattern, bike.parent.text)
print(name, price)

试试这个:

import requests
from bs4 import BeautifulSoup
page = requests.get("https://www.wiggle.co.uk/cycle/mountain-bikes")
soup = BeautifulSoup(page.content, "lxml")
divs = soup.find_all('div', {'class': 'bem-product-list-item--grid js-result-list-item'})
for div in divs:
name = div.find('a', {'class': 'bem-product-thumb__name--grid'}).text
price = div.find('span', {'class': 'bem-product-price__unit--grid'}).text
print('Bike name: ' + str(name))
print('Price: ' + str(price))

lxml代替html.parser
from bs4 import BeautifulSoup之后插入import lxml并安装包

最新更新