开发者社区 问答 正文

Python, BS和Selenium

我试着用javascript动态+ bs + python的web废料,我读了很多东西来想出这段代码,我试图报废一个价格用javascript呈现在一个著名的网站,例如:

from bs4 import BeautifulSoup
from selenium import webdriver

url = "https://www.nespresso.com/fr/fr/order/capsules/original/"

browser = webdriver.PhantomJS(executable_path = "C:/phantomjs-2.1.1-windows/bin/phantomjs.exe")
browser.get(url)
html = browser.page_source

soup = BeautifulSoup(html, 'lxml')

soup.find("span", {'class':'ProductListElement__price'}).text

但结果只有'\xa0',这是源值,而不是javascript值,我不知道我到底做错了什么…… 致以最亲切的问候 问题来源StackOverflow 地址:/questions/59383669/python-bs-and-selenium

展开
收起
kun坤 2019-12-27 10:11:36 363 分享 版权
1 条回答
写回答
取消 提交回答
  • 你不需要浏览器的费用。信息在一个脚本标记中,因此可以对其进行正则化并使用json库进行处理

    import requests, re, json
    
    r = requests.get('https://www.nespresso.com/fr/fr/order/capsules/original/')
    p = re.compile(r'window\.ui\.push\((.*ProductList.*)\)')
    data = json.loads(p.findall(r.text)[0])
    products = {product['name']:product['price'] for product in data['configuration']['eCommerceData']['products']}
    print(products)
    

    Regex:

    2019-12-27 10:11:44
    赞同 展开评论