嗨,伙计们,我发现用漂亮的汤有一些问题。我正试图抓取班古德的网站,但我不知道为什么,我只成功地抓取了物品的名称。使用 selenium 我刮项目的价格(只有联合国美元不是欧元),所以我请求您的帮助,我将非常高兴,如果你知道任何方法来克服这些问题。
我想把名字、欧元价格、折扣、明星、形象都删掉,但我不明白为什么靓汤不管用。
注:显然,我不想要所有的功能,但为什么美丽的汤给所有这些问题的原因和一个例子,如果你可以的话。
现在,我试图在这里发布我想要刮的html(如果可能的话,在漂亮的汤中)。
谢谢大家!
我想刮的链接=https://it.banggood.com/aneng-an8008-true-rms-wave-output-digital-multimeter-ac-dc-current-volt-resistance-frequency-capacitance-test-p-1157985.html?rmmds=flashdeals&cur_warehouse=usa
<span class="main-price" oriprice-range="0-0" oriprice="22.99">19,48€</span>
<strong class="average-num">4.95</strong>
<img src="https://imgaz1.staticbg.com/thumb/large/oaupload/banggood/images/1B/ED/b3e9fd47-ebb4-479b-bda2-5979c9e03a11.jpg.webp" id="landingImage" data-large="https://imgaz1.staticbg.com/thumb/large/oaupload/banggood/images/1B/ED/b3e9fd47-ebb4-479b-bda2-5979c9e03a11.jpg" dpid="left_largerView_image_180411|product|18101211554" data-src="https://imgaz1.staticbg.com/thumb/large/oaupload/banggood/images/1B/ED/b3e9fd47-ebb4-479b-bda2-5979c9e03a11.jpg" style="height: 100%; transform: translate3d(0px, 0px, 0px);">
这些是我正在使用的函数
这不起作用:
def take_image_bang(soup): #beautiful soup and json
img_div = soup.find("div", attrs={"class":'product-image'})
imgs_str = img_div.img.get('data-large') # a string in Json format
# convert to a dictionary
imgs_dict = json.loads(imgs_str)
print(imgs_dict)
#each key in the dictionary is a link of an image, and the value shows the size (print all the dictionay to inspect)
#num_element = 0
#first_link = list(imgs_dict.keys())[num_element]
return imgs_dict
这些工作(功能get_价格仅为美元而非欧元):
def get_title_bang(soup): #beautiful soup
try:
# Outer Tag Object
title = soup.find("span", attrs={"class":'product-title-text'})
# Inner NavigableString Object
title_value = title.string
# Title as a string value
title_string = title_value.strip()
# # Printing types of values for efficient understanding
# print(type(title))
# print(type(title_value))
# print(type(title_string))
# print()
except AttributeError:
title_string = ""
return title_string
def get_Bangood_price(driver): #selenium
c = CurrencyConverter()
prices = driver.find_elements_by_class_name('main-price')
for price in prices:
price = price.text.replace("US$","")
priceZ = float(price)
price_EUR = c.convert(priceZ, 'USD', 'EUR')
return price_EUR
2条答案
按热度按时间agyaoht71#
由于您需要更改欧元url中的价格,您可以从网页中设置价格
查找标题:
输出:
对于findign评论:
输出:
寻找价格和其他您可以从
script
标签使用json
加载它!从中查找值:
输出:
要在价格动态更新时查找折扣价格,您可以使用xhr链接调用并从中查找数据!这是你的电话号码
url使用post请求吧!
9jyewag02#
要以欧元为单位提取数据,您需要更改链接地址并将其添加到链接末尾:
对于欧元添加:&货币=欧元
美元加成:&货币=美元
对于欧元,链接应为:https://it.banggood.com/aneng-an8008-true-rms-wave-output-digital-multimeter-ac-dc-current-volt-resistance-frequency-capacitance-test-p-1157985.html?rmmds=flashdeals&cur_warehouse=usa¤cy=eur
例如:如果您希望为产品更改更改仓库:
cn变更:当前仓库=cn
美国变更:当前仓库=美国
对于pl变更:cur_warehouse=pl
这些是url的动态变量,可根据其输入更改网页。
在此之后,您的第二种方法应该可以正常工作。刮擦快乐!!!