如何解决Python selenium webdriver返回空白文件

Posted

技术标签:

【中文标题】如何解决Python selenium webdriver返回空白文件【英文标题】:How to solve Python selenium webdriver returning blank files 【发布时间】:2022-01-19 00:28:52 【问题描述】:

我目前正在系统地抓取一家在线零售商网站的数据。我每周都这样做一次,已经 2 个月了,我的 Python 代码运行良好,但是当我今天尝试运行它时,它返回的是空白文件,而不是我通常的数据。我尝试了多种方法来解决这个问题,但没有设法解决它。我尝试切换到 geckodriver 但结果相同。我还更新了我的 selenium、chromedriver、chrome ......但没有运气。有人建议解决这个问题吗? (这是我的第一篇文章,所以希望我能清楚地显示代码)

        from bs4 import BeautifulSoup
        import re
        import csv
        from selenium import webdriver
        import numpy


        url = "https://www.zalando.be/sportsokken/_zwart/"

        driver = webdriver.chrome(executable_path = "/Users/lisabyloos/Downloads/chromedriver")
        pages = numpy.arange(1,3,1)
        for page in pages:
          driver.get(url + "?p=" + str(page))
          html_content = driver.execute_script('return document.body.innerHTML')

          soup = BeautifulSoup(html_content, "lxml")

          product_divs = soup.find_all("div", attrs="class": "_4qWUe8 w8MdNG cYylcv QylWsg SQGpu8 iOzucJ JT3_zV DvypSJ")

          results = []

          for product in product_divs:
            results.append(product.get_text(separator=";"))

          import pandas as pd
          df = pd.DataFrame([sub.split(";") for sub in results])
          df.to_csv("myfile" + str(page) + ".csv" )

【问题讨论】:

你在这里也使用 bs4 的原因是什么? 【参考方案1】:

会发生什么?

您尝试查找的元素类别是动态生成的并且已经更改。

注意 页面不时变化,但结构变化比样式变化少。因此,使用元素或 id 而不是类进行选择始终是一个好策略。

如何解决?

调整选择标准以获得结果:

product_divs = soup.find_all('article')

【讨论】:

以上是关于如何解决Python selenium webdriver返回空白文件的主要内容,如果未能解决你的问题,请参考以下文章

python+selenium定位日期方法

selenium模块

selenium + webdriver(python)

Python+Selenium练习篇之5-利用css定位元素

selenium-java自动化测试环境搭建中的问题以及解决方法

python&selenium自动化测试实战项目——全面完整详细(02)