【问题标题】:Webscraping Selenium and PhantomJS Returning text for product details网页抓取 Selenium 和 PhantomJS 返回产品详细信息的文本
【发布时间】:2020-10-07 12:53:42
【问题描述】:

我是使用 python 进行网页抓取的菜鸟,我正在尝试使用 Selenium 和 phantomJS 检索网页的产品详细信息文本,因为当我使用“driver.page_source”时,此页面不显示呈现的 html,我的代码是这个:

url = 'https://www.jumbo.cl/frutas-y-verduras?page=1'
driver = webdriver.PhantomJS()
driver.get(url)
html = driver.page_source

不幸的是,这样做我检索了相同的源代码而没有可视化呈现的格式

我返回的代码摘录:

categoryId\\":\\"21\\",\\"productTitle\\":\\"Champiñón 200 g | Jumbo.cl\\",\\"metaTagDescription\\":\\"Encuentra Champiñón 200 g y la mejor variedad de Verduras en Jumbo.cl\\",\\"releaseDate\\":\\"2017-08-24T00:00:00\\",\\"clusterHighlights\\":{\\"325\\":\\"Dia de la fruta y verdura\\",\\"3554\\":\\"Vitrina 3554 limpia\\",\\"3862\\":\\"EXCLUSIVO 31082019\\",\\"3864\\":\\"DESPACHO 310819\\"

目标代码的提取(我可以将这段代码可视化到chrome控制台中,但是当我访问源代码时,页面会返回上面的代码)。

<li class="shelf-item">
  <div class="shelf-product-island">

包含每个产品的详细信息值的容器位于“货架项目”类的列表中

【问题讨论】:

    标签: python html selenium phantomjs headless


    【解决方案1】:

    您可以使用 chromedriver 代替 PhantomJS() 和以下代码:

    from selenium import webdriver
    
    driver = webdriver.Chrome('./chromedriver')
    
    def parse(url):
        driver.get(url)
    
        driver.implicitly_wait(10)
        title_list = driver.find_elements_by_xpath('//a[@class="shelf-product-title"]/h2')
    
        title_list_text = [t.get_attribute('textContent') for t in title_list]
    
        return title_list_text
    
    titles_list = parse("https://www.jumbo.cl/frutas-y-verduras?page=1")
    
    print(titles_list)
    

    但请注意,如果要解析第二页和其他页面,则必须将第二页 url 传递给函数,例如:

    titles_list = parse("https://www.jumbo.cl/frutas-y-verduras?page=2")
    
    

    等等。或者在页面底部找到一个寻呼机按钮,点击它并重新解析另一个页面

    【讨论】:

    • 谢谢!我不知道get_attribute。现在我可以接受所需的文字了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多