当我通过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()
答案 0 :(得分:0)
该网站可能阻止或限制用户代理硒。一个简单的测试是更改用户代理并查看是否这样做。关于这个问题的更多信息:
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)
答案 1 :(得分:0)
尝试类似的东西:
import time
time.sleep(5)
content = driver.execute_script("return document.getElementsByTagName('html')[0].innerHTML")
代替driver.page_source
。
动态网页通常需要用JavaScript呈现。