【发布时间】:2020-02-21 14:40:10
【问题描述】:
我正在尝试在 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)
【问题讨论】:
-
在执行获取价格之前调整您的脚本以更改国家/地区
-
谢谢。有什么建议吗?
-
查看这里的文档:selenium-python.readthedocs.io/navigating.html 您需要在屏幕/网页上找到元素,然后对它们执行
click事件。然后导航到您想要的页面并像以前一样阅读价格 -
它使用 cookie
usrIpCountry:"FR"来设置国家和显示欧元。它从colmar.it//Assets/Colmar/json/productlist-en-gb.json 获取 JSON 格式的数据 -
我在 Firefox/Chrome(标签
Network)中使用DevTools来查看从浏览器到服务器的所有请求。当我过滤为仅显示XHR(AJAX) 请求时,我得到了这个 url,我可以看到它得到的响应 - 我在 JSON 中看到了CurrencySymbol。使用 XHR (AJAX) 在页面上设置数据是一种流行的方法。在 DevTools 中,我还可以看到所有标题 - 即。 cookie - 当我在页面上更改国家/地区时查看它发送到服务器的内容 - 我看到带有 'FR` 的 cookie
标签: python selenium web-scraping beautifulsoup