首页 > 解决方案 > 如何使用 Selenium 从网站获取不同的货币?

问题描述

我正在尝试在 python 中学习 Selenium,以以下网站(我位于欧洲以外)获取欧元价格。如果我只是用漂亮的汤来解析 html,它总是会给我以美元为单位的价格。有人告诉我 Selenium 可以在显示时呈现 html 代码(这样我就可以刮取欧元价格),但不太确定该怎么做

我的代码如下:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import os
from bs4 import BeautifulSoup
import requests
import pandas as pd
import json

url = "https://www.colmar.it/en-gb/Man/Ski/Jackets/C352"

driver = webdriver.Chrome()
driver.implicitly_wait(30)
driver.get(url)

然后用 BeautifulSoup 遍历数据,代码如下:

soup = BeautifulSoup(driver.page_source, 'lxml')
price = []
for price_tag in soup.find_all('span', class_='product-preview__old-price'):
        price.append(price_tag.text)

由于我的位置在欧洲以外,它总是给我美元的价格:(

有没有办法获得我看到的html(当我将网站上的交付区域更改为欧洲时)?

编辑:我试图将语言调整为法语,但仍然没有成功。完整代码如下。还有其他建议吗?

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import os
from bs4 import BeautifulSoup
import requests
import pandas as pd
import json

url = "https://www.colmar.it/en-gb/Man/Ski/Jackets/C352"

options = webdriver.ChromeOptions()
options.add_argument("--lang=fr");
driver = webdriver.Chrome(options=options)
driver.implicitly_wait(30)
driver.get(url)

soup = BeautifulSoup(driver.page_source, 'lxml')
price = []
for price_tag in soup.find_all('span', class_='product-preview__old-price'):
        price.append(price_tag.text)

标签: pythonseleniumweb-scrapingbeautifulsoup

解决方案


您可以尝试在某个国家/地区设置cookie,尝试:

url = "https://www.colmar.it/en-gb/Man/Ski/Jackets/C352"

driver = webdriver.Chrome()
driver.implicitly_wait(30)
driver.get(url)

# Delete current country cookie
driver.delete_cookie('usrIpCountry')
# Set a cookie with country France
driver.add_cookie({'name':'usrIpCountry', 'value':'France', 'domain': 'www.colmar.it'})

# Refresh before proceeding
driver.refresh()

soup = BeautifulSoup(driver.page_source, 'lxml')
price = []
for price_tag in soup.find_all('span', class_='product-preview__old-price'):
        price.append(price_tag.text)

这应该可以。祝你好运!


推荐阅读