【问题标题】:Can't View Complete Page Source in Selenium无法在 Selenium 中查看完整的页面源
【发布时间】:2016-12-27 02:08:31
【问题描述】:

当我通过 Chrome 手动导航到站点后查看源 HTML 时,我可以看到完整的页面源,但是通过 selenium 加载页面源时,我没有获得完整的页面源。

from bs4 import BeautifulSoup
from selenium import webdriver
import sys,time


driver = webdriver.Chrome(executable_path=r"C:\Python27\Scripts\chromedriver.exe")
driver.get('http://www.magicbricks.com/')


driver.find_element_by_id("buyTab").click()

time.sleep(5)
driver.find_element_by_id("keyword").send_keys("Navi Mumbai")

time.sleep(5)
driver.find_element_by_id("btnPropertySearch").click()

time.sleep(30)

content = driver.page_source.encode('utf-8').strip()

soup = BeautifulSoup(content,"lxml")

print soup.prettify()

【问题讨论】:

  • 你能用webdriver添加你错过的页面源吗?
  • 您是否尝试在driver.get('http://www.magicbricks.com/') 行之后添加time.sleep(5) 或其他任意时间?可能是页面加载速度不够快,您正在寻找的组件不可用。
  • 另外,我注意到该网站在您开始使用时会出现一个弹出窗口。由于这个弹出窗口,我不得不点击两次“btnPropertySearch”按钮。我能够看到所有的源代码。你能详细说明你看不到的东西吗?

标签: python selenium selenium-webdriver bs4


【解决方案1】:

该网站可能会阻止或限制 selenium 的用户代理。一个简单的测试是更改用户代理并查看是否可以。这个问题的更多信息:

Change user agent for selenium driver

引用:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
opts = Options()
opts.add_argument("user-agent=whatever you want")

driver = webdriver.Chrome(chrome_options=opts)

【讨论】:

  • 感谢您的提示:options.add_argument('user-agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) ''Chrome/94.0.4606.81 Safari/ 537.36') 这段代码使用用户代理为我工作
【解决方案2】:

尝试类似:

import time
time.sleep(5)
content = driver.execute_script("return document.getElementsByTagName('html')[0].innerHTML")

而不是driver.page_source

动态网页往往需要通过 JavaScript 来呈现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-01
    • 1970-01-01
    • 2016-10-30
    • 2020-01-27
    • 2021-12-26
    • 2012-07-22
    相关资源
    最近更新 更多