- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Python Selenium webdriver 的新手。我正在编写一个脚本来抓取本网站的价格 https://www.bhphotovideo.com/c/buy/Digital-Cameras/ci/9811/N/4288586282 .但我想从美元中提取澳元的价格。您将在本网站的页脚中看到一个下拉列表(货币)。此下拉列表将显示货币列表。单击此下拉菜单后,选择货币为澳元。该网站立即刷新并以美元和澳元显示价格。我只需要以澳元而不是以美元计算价格。我该怎么做?
这是我的代码:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.bhphotovideo.com/c/buy/Digital-Cameras/ci/9811/N/4288586282")
price = driver.find_elements_by_xpath('//span[@data-selenium = "uppedDecimalPriceFirst"]')
for i in range(0, len(price)):
print("Prices in USD : " + price[i].text)
driver.close()
输出:
Price : $3,899
预期输出:
Price : $5462.50
Currency List
最佳答案
这是有点不同的方法,不使用 selenium
。
货币代码作为 cookie 值之一传递。因此,您可以获取所有 cookie,解析它们并发送请求。
这样做的缺点是它很快就会过期。
from http.cookies import SimpleCookie
import requests
from bs4 import BeautifulSoup
headers = {
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"accept-language": "en-GB,en-US;q=0.9,en;q=0.8",
"cache-control": "max-age=0",
"sec-fetch-dest": "document",
"sec-fetch-mode": "navigate",
"sec-fetch-site": "same-origin",
"referer": "https://www.bhphotovideo.com/c/buy/Digital-Cameras/ci/9811/N/4288586282",
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36"
}
url = "https://www.bhphotovideo.com/c/buy/Digital-Cameras/ci/9811/N/4288586282"
rawdata = """
__cfduid=d3bdb54963e368d44b5e6884f7d73e51c1602143416; dcid=1602143417279-81384671; mapp=0; cartId=22850067748; locale=en; aperture-be-commit-id=n/a; D_SID=62.96.159.233:3ohrnHfDBx/FJKw5rqCYwC+IsePPxHUI0sfORzmYLhg; aperture-be-commit-id=n/a; ftr_ncd=6; __cfruid=be69be948af2b86ea99a0bb76bfe96f1f2e949cf-1602145612; BHFOTO_ENSIGHTEN_PRIVACY_BANNER_VIEWED=1; _fbp=fb.1.1602146128792.1914192519; SSID_C=CABIZh0AAAAAAAC5xH5fXRRAGLnEfl8DAAAAAAAAAAAA4th-XwANyA; SSSC_C=333.G6881153579923543133.3|0.0; my_cookie=!qltlzDwS7kQ/zfYbOLfqaMDV2Dx0K84+1Np3voLzYtZJpbdmGM1aRtff/nmQJ3K2+8RhwqtQU7mqko0njfvupkBbTQcSqyQsQqzSit5MsDRmQAltfZQJhGdGL7+7DP37WbBdLTWyfrIPcBHn72OdD66SAh/iiPaOqzyT2wI6ifXP0la2fofeIPxkkD5gcQkibDJFDdy6FQ==; build=20200925v10-20200925v10; TS0188dba5_77=080f850069ab28005f16d063631902e3794db1c0edc9f4c6f6ef0d1eac6527cf99ad1b8c27823c9b69571149d6b96f090814e6aa558240000b1940db61379359c992a1feb444e1125e0df1fe6100edbe2d3b20d0751edcc1b64b1e00a346fdc9f9abcfadd468699787be03341403bd5353fdb3a2e5d8deb9; cookieID=221356360871602130569547; sessionKey=1e8aaddd-62ef-4dee-82c8-6f35fcc57a71; utkn=2870955d449ed2798d6d41e4b34cb3d7; SSRT_C=JeR-XwQBAA; SSPV_C=NOgAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAA; pvid=1602151461750-67341336; TS01c1e793=01ec39615f9aa795b03ad73db5ae3ea9bfaccd846205e248eefb69ecbb9655964dbd97008d269c15dc4da0f79c2a904db5fbb4141ad60dd5e19c1cc1945cac3435d54cc822813399ba0563719ef2813d1e35f54430; TS01472329=01ec39615fa04d4ed3ebebb173c30f0c52eb5a398a02c6c93717c12f32ed8f6055a8528125ec9a7ae65ddb2b93d1ec5f99cb9ccd51141361e57c4a0c54bd1b9ee137e996cb; __cf_bm=78744b2be0c5790321c0fca10c6e9f49811df789-1602151463-1800-AePVD5wqk3ezKZPdl1gG2H/9EkXrrYhfPhrO21Gd/A1AXsfyYZ1fAzpSulkj6Xjvm6uigtGKCUxaJwuohJ0a96nrAfe18dExkTncLlDc/8JQFjcTyDM12xKX5H2bdGrE2Q==; D_IID=80EBCC02-1B08-3947-9BBA-B7DE344C0CC2; D_UID=57631A10-AD80-379F-B193-E3144BE816A6; D_ZID=3E416AAF-00A8-38F3-8951-18E587B713F3; D_ZUID=DD74D4B2-8918-3C31-86CE-559CD726FA66; D_HID=10B0A111-9447-3A05-9D56-B60C9EAF8E57; uui=800.952.1815|; TS0119d048=01ec39615fa9a4fe4090a627d643ced60a42832e7505e248eefb69ecbb9655964dbd97008dfb49159bf4a23094ef84f4adea4642e74d190625c36f2dea052a14c1a672d5414f4d44f6abe7dece2da3d4b346965a974f110d88d050837c31a114c3cab7eb945e08f785ed3175f6370325edc449813d420357a41783aacbf1ed6284c67427c4b9e6beea94f05f3e544e7d2e8477c0e326fa6bca1d24896f750eb456e07d71135edc2e20bbb3214751b624bf57cf6a7bfc2de1a5012e41a12bb765b0518572b5; JSESSIONID=P28Hq0Itv8QxVhGCV0uNtM3VtH_upfSq!230185629; TS0188dba5=01ec39615f507d745bcb1186593a0c4b69a62e6cafecbc31323cbb6cc681bcdb22e0b477baa125ba7d0a82f94f7c3d8be8a5accb5725a00585f2206c375d2f0fcc1b23e501f4ae68f76fbdd16dc18929fd78ad8c360ea424f8b14a1a3a19c4ebcbf0d33a56; forterToken=4d9bbef1ef224c25a2d18be549978618_1602151464974__UDF43_6; TopBarCart=0|0; TS01e1f1fd=01ec39615f2d39ed2dad52a73051682081c331a6fc855ff8177aa2b38dd47ee53287ef19ce9149fa03daf9e245f740107ae7418eac935eda28bf46197e4c0912c7dec3d9e9809839dfcb4f3ba2b8578ef3aae5f6757093319d1016d4672421656801801d7ea0c51b9fee103e26b11616c645918809698bacf0f9d2ff7c417c991064c74acf03fb9615419622d2f45342df9551e738; TS01d628c4=01ec39615f10de3e4775311fe5669af070e90c5813855ff8177aa2b38dd47ee53287ef19ce49233bd9f6eaae68737da6b926ec55365d9ba728190cac27d9b2935672943d9703024c3347affe42969f5767337f2aaeb26763a2924b02d56124b0fde952683157cf258c2ee5ac1e8b34d61653354138d80dfcfdec9c05278f413d99b988b82b598ac9cbf9d13cb074d64f3964183a340e1eec613eedff8014938db974924ef90a531f09bebeffe76b18ef64d0544f71236390b7f94621442a9a77bb33f8710dcdfb8456c5ddc25c72ec9c9bb5d9bfcd; app_cookie=1602151489; lpi=cat=2,cur=AUD,app=D,lang=E,view=L,lgdin=N,cache=release-WEB-20200924v10-BHJ-DVB25488-3,ipp=24,view=L,sort=BS,priv=Y,state=NY; dpi=cat=2,cur=AUD,app=D,lang=E,view=L,lgdin=N,cache=release-WEB-20200924v10-BHJ-DVB25488-3"""
cookie = SimpleCookie()
cookie.load(rawdata)
cookies = {}
for key, morsel in cookie.items():
cookies[key] = morsel.value
response = requests.get(url, headers=headers, cookies=cookies)
soup = BeautifulSoup(response.content, "html.parser")
p_name = soup.find_all("span", {"data-selenium": "miniProductPageProductName"})
p_conv = soup.find_all("div", {"data-selenium": "miniProductPageProductConversion"})
f_currency = soup.find_all("div", {"data-selenium": "miniProductPagePricingForeignCurrency"})
product_name = [t.getText() for t in p_name]
price = [t.find("span").getText() for t in p_conv]
foreign_price = [t.getText() for t in f_currency]
for n, u, a, in zip(product_name, price, foreign_price):
print(f"{n} - {u} - {a}")
示例输出:
Canon EOS R5 Mirrorless Digital Camera (Body Only) - $3,89900 - AUD $5,462.50
Sony Alpha a7S III Mirrorless Digital Camera (Body Only) - $3,49800 - AUD $4,900.70
Canon EOS 5D Mark IV DSLR Camera Body with Accessory Kit - $2,49900 - AUD $3,501.10
Canon EOS R6 Mirrorless Digital Camera (Body Only) - $2,49900 - AUD $3,501.10
Sony Alpha a7 III Mirrorless Digital Camera Body with Accessory Kit - $1,99800 - AUD $2,799.20
Sony ZV-1 Digital Camera - $79800 - AUD $1,118.00
Canon EOS R6 Mirrorless Digital Camera with 24-105mm f/4-7.1 Lens - $2,79900 - AUD $3,921.40
要获取原始 cookie 字符串,请在设置货币后从请求 Header 中复制
cookie
值。
关于python - 从 Python Selenium 中的 USD 中提取 AUD 的价格 - Web Scraping,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64257837/
虽然 HTML Scraping 从我所看到的内容中得到了很好的记录,并且我了解它的概念和实现,但是从隐藏在身份验证表单后面的内容中进行抓取的最佳方法是什么。我指的是从我合法访问的内容中抓取,因此我正
使用 Python、Selenium、Sublime 和 Firefox:我正在从这个网站上抓取链接,并想将抓取的页面(作为 html 文件)保存到一个文件夹中。但是,我已经工作了好几天,试图将这些
我需要构建一个 python 脚本,旨在抓取网页以检索“显示更多”按钮中的数字。 此数字将用作请求 URL 的参数,该 URL 将返回包含数据 + 数字的 JSON。最后一个数字将用作请求 URL 的
当 Google map 在某种程度上确认某个地点搜索时,它会重定向到特定的 Google 地点 url,否则它会返回 map 搜索结果页面。 谷歌地图搜索“manarama”是 https://ww
每当我想在 amazon.com 上抓取时,我都会失败。因为产品信息会根据 amazon.com 中的位置而变化 这个变化信息如下; 1-价格 2-运费 3-海关费用 4-发货状态 用selenium
我正在使用scrapy来抓取网站,现在我需要设置代理处理已发送的请求。谁能帮我在scrapy应用程序中解决这个设置代理。如果有,也请提供任何示例链接。我需要解决这个请求来自哪个 IP 的问题。 最佳答
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 2年前关闭。 Improve thi
我想知道是否有任何技术可以识别收集信息以供非法使用的网络爬虫。通俗地说,数据盗窃是为了创建一个网站的副本。 理想情况下,该系统会检测来自未知来源的抓取模式(如果 Google 抓取工具不在列表中,等等
我想编写一个抓取脚本来检索cnn文章中的评论。例如,本文:http://www.cnn.com/2012/01/19/politics/gop-debate/index.html?hpt=hp_t1
我正在尝试构建Instagram帐户的Microsoft Access数据库,并希望提取以下数据以及其他信息: 帐户名 关注者数量 关注的人数 帖子数(及其日期) 图片的赞数 图片上的评论数量 我在构
我正在尝试运行一个爬虫,其输出日志如下所示: 2017-04-25 20:22:22 [scrapy.spidermiddlewares.httperror] INFO: Ignoring respo
我想抓取一个网站,该网站的网页上有他们商店的所有联系方式,我可以手动记下这些信息,因此抓取该网站是合法的还是非法的。 最佳答案 是的,除非您不道德地使用它。 Web 抓取就像世界上的任何工具一样。您可
假设我有以下 html: I am going by flying mr tt 文本节点中任何等于或大
寻找任何工具(最好在 python 中)来提取特定网页收到的浏览次数。如果没有,也很方便知道我是否可以获得任何其他网页特定的分析(例如列出的那个) 最佳答案 除非您拥有此特定网页,否则无法查看它获得了
我刚刚开始研究这个,我想将我的 Netgear 路由器 ( http://192.168.0.1/setup.cgi?next_file=stattbl.htm ) 统计数据刮到一个 csv 文件中。
我目前是开发包含前端客户端的应用程序的团队的一员。 我们通过这个客户端发送用户数据,每个用户都有一个用户 ID,客户端通过 RESTful API 与我们的服务器对话,向服务器询问数据。 例如,假设我
有谁知道我如何轻松下载所有已发表的文章摘要?我正在做一个文本挖掘项目。 我能找到的最接近的一个可以在给定 pmid 的情况下一次下载一个摘要,但这对我的目的来说太慢了,因为我必须一次下载一个。 最佳答
当我使用Beautiful Soup发出请求时,我被阻止为“机器人”。 import requests from bs4 import BeautifulSoup reddit1Link = requ
由于网站抓取 Google、Bing 等违反了他们的服务条款,我想知道是否有任何搜索引擎可以抓取结果? 最佳答案 为什么要刮?为什么不使用支持的 API? http://code.google.com
许多页面(facebook、google+ 等)都有一个功能,可以创建带有标题、图像和来自链接的一些文本的摘要。我试图找出是否有任何关于如何执行此类功能的库或指南,但我的搜索结果根本没有帮助。 我知道
我是一名优秀的程序员,十分优秀!