javascript - 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 才能加载内容?我没主意了。
解决方案
推荐阅读
- r - 如何使用杂乱的数据列自动整理excel数据并导入R?
- react-native - 反应模块'YogaKit'的本机run-ios重新定义
- sql - 如果 column_date 未通过,如何在 postgres 中插入?
- c - 在扫描复数计算器的数字之前扫描运算符会出错,但在数字后扫描运算符时不会出错
- ruby-on-rails - 如果 Rails Runner 消失,为什么它不会重新连接到数据库?
- java - 如何使用 MVC 结构暂停
- microsoft-graph-api - 无法使用 Graph API 在 Microsoft Teams 中回复第三方导入的消息
- python - 限制 Wagtail Steamfield 中特定 DocumentChooserBlock() 块的文件类型
- c++ - SSH 会话不会通过 cpp reboot 命令终止,而是通过 CLI 命令重新启动
- deep-learning - COCO 上的 Darknet 预训练权重如何适应不同的输出大小(不同的类数)?