python - 无头硒立即退出
问题描述
我有一个无头网络刮刀。当它运行刮板时,它会获取一个基本网址,刮掉该页面上的链接,然后刮掉它从该页面获得的链接。
我遇到的问题是,当我运行刮板时,它几乎立即退出。当我正常运行刮刀(非无头)时,它工作得非常好。
这些是我的硒论点:
options = webdriver.ChromeOptions()
options.binary_location = os.environ.get('GOOGLE_CHROME_BIN')
options.add_argument('--headless')
options.add_argument('--disable-gpu')
options.add_argument('--no-sandbox')
driver = webdriver.Chrome(executable_path=os.environ.get('CHROMEDRIVER_PATH'),
options=options)
我也尝试添加这些选项,但它给了我相同的结果:
options.add_argument('--disable-dev-shm-usage')
options.add_argument("--window-size=1920,1080")
options.add_argument("--start-maximized")
我该如何解决这个问题?我正在尝试将此刮板部署到heroku,但我上面尝试过的所有方法都没有奏效。
解决方案
除非指定了用户代理,否则基本上某些网站不会以无头模式加载。
为了解决这个问题,我添加了:
user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'
options.add_argument(f'user-agent={user_agent}')
这解决了我的刮刀立即退出的问题
推荐阅读
- python - 从文件中读取数值并将其作为数组放置
- java - 将动态 SQL 修正为预准备语句
- docker - 在 docker 上运行烧瓶的教程无法覆盖 localhost
- c++ - 提升 1.69 和 CMake 3.13
- html - 有什么方法可以得到一个带有 nth-of-type 伪类的 CSS 选择器?
- c# - 如何使用表达式为索引器设置属性值?
- c - 我不明白这个算法的时间复杂度是如何计算的
- c# - CSHTML 在删除数据库记录之前确认删除
- r - 旋转数据框并排除 r 中的空白单元格
- apache-flink - Flink EventTime 应用程序中的每条记录都需要时间戳吗?