首页 > 解决方案 > Selenium python返回页面Head而不是Body

问题描述

几个小时以来,我一直在用这个敲我的头。几周前我构建了一个代码,它使用 python-selenium 并在google colab上运行以抓取超市网站

直到今天代码停止工作,一切都很好。为了理解它为什么会中断,我显示了页面源代码,令我惊讶的是,我意识到我正在获取带有 javascript(我不明白)的页面标题,而不是正文,字面意思<body></body>。代码本身运行良好,我已经在其他 URL(例如 python.org/)上对其进行了测试。

我在 Ubuntu 18.04.3 LTS 上使用 selenium 3.141.0 和 python 3.6.9,chromium-chromedriver 79.0.3945.79。这是重现我的问题的最少代码。

# if running directly on google colab
!apt-get update
!apt install chromium-chromedriver
!pip install selenium

我尝试了各种不同的用户代理来尝试欺骗他们可能拥有的任何反爬虫。检查了 iFrame 但没有。

import time 
from selenium import webdriver
from bs4 import BeautifulSoup as soup

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
chrome_options.add_argument("user-agent=" + user_agent)

wd = webdriver.Chrome('chromedriver', options=chrome_options)
url = "https://www.continente.pt/stores/continente/pt-pt/public/Pages/category.aspx?cat=Mercearia#/"
wd.get(url)
time.sleep(30)
print(soup(wd.page_source))

我是否必须运行一些 javascript 才能加载内容?我没主意了。

标签: javascripthtmlpython-3.xseleniumselenium-chromedriver

解决方案


推荐阅读