使用 webdriver.PhantomJS 无法加载 ajax 吗?

2016-11-29 16:41:57 +08:00
 JianBingXia
driver = webdriver.PhantomJS()
driver.get(url)
data = driver.find_elements_by_xpath('***********')

试了试,貌似 js 生成的动态网页可以加载正常,但为什么 ajax 还是没有加载出来呢?应该怎么处理呢?

另外 page_source 其实是未加 js 的原始 html 吧?就和 chrome 查看网页源代码一样吧?
那么想和 F12 看到的一样用什么方法呢?

感谢.
3231 次点击
所在节点    Python
4 条回复
SilentDepth
2016-11-29 18:39:51 +08:00
不了解 webdriver ,但 PhantomJS 是可以处理 AJAX 的。
Chrome 的查看网页源代码功能和 F12 是一个效果啊
bdbai
2016-11-29 19:43:15 +08:00
等几秒试试?
F12 Document 查看的是当前网页的 DOM ,被 js 改过的,不跑一遍没法一样。
简单的请求可以从 F12 Network 里面抓。模拟发请求比 PhantomJS 效率高。
pixes4world
2016-11-29 20:08:01 +08:00
不管你用什么 webdriver , ajax 加载都需要等待的,最直接的方法就是指定固定的等待时间: time.sleep(10) ;
或者智能一点,等待特定元素加载完成: WebDriverWait(driver, 20, 0.5).until(EC.presence_of_element_located(locator));
mingyun
2016-11-30 23:40:55 +08:00
@pixes4world 可行

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/324134

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX