Python怎么获取js动态加载的数据

 我来答
人啦哈w
2016-07-29 · 知道合伙人软件行家
人啦哈w
知道合伙人软件行家
采纳数:3947 获赞数:19705

向TA提问 私信TA
展开全部
利用WebBrowser控件来获取js动态加载的数据:
首先,我要在DocumentCompleted事件里面完成内容获取的工作,因为该控件是在文档加载完成后触发的。其次,这个事件有个问题,就是说如果在页面中有iframe框架之类的,如果这个iframe加载完成也会触发这个事件,所以我们要做个判断:
if (wb.ReadyState == WebBrowserReadyState.Complete && e.Url.ToString() == wb.Url.ToString())
wb.Document.Body.InnerHtml;//这样就获取到数据了
鈾氶瓏鈾
2016-11-14 · 知道合伙人软件行家
鈾氶瓏鈾
知道合伙人软件行家
采纳数:718 获赞数:1337

向TA提问 私信TA
展开全部
要抓取动态加载的元素,首先考虑使用selenium来调用浏览器进行抓取。
而我们运行的环境是Linux,最理想的方法是在无界面情况下进行抓取。
所以使用selenium+phantomjs来进行无界面抓取
phantomjs是什么呢?它是一个基于webkit内核的无头浏览器,即没有UI界面,即它就是一个浏览器

selenium和phantomjs的安装配置可以google,这里就略过不谈了
代码如下:
from selenium import webdriver
driver = webdriver.PhantomJS(executable_path='/bin/phantomjs/bin/phantomjs')#如果不方便配置环境变量。就使用phantomjs的绝对路径也可以
driver.get('http://image.baidu.com/i?ie=utf-8&word=%E5%91%A8%E6%9D%B0%E4%BC%A6')#抓取了百度图片,query:周杰伦

driver.page_source #这就是返回的页面内容了,与urllib2.urlopen().read()的效果是类似的,但比urllib2强在能抓取到动态渲染后的内容。
driver.quit()

到这里。就抓取动态页面成功了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我心我在
2016-05-22 · TA获得超过2157个赞
知道小有建树答主
回答量:784
采纳率:77%
帮助的人:628万
展开全部
百度搜索 :在Python中执行javascript
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kerrywangxy
2016-08-23 · TA获得超过193个赞
知道答主
回答量:121
采纳率:0%
帮助的人:62.3万
展开全部
import selenium
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
import time

browser = webdriver.Firefox() # Get local session of firefox
browser.get("http://news.sina.com.cn/c/2013-07-11/175827642839.shtml ") # Load page
time.sleep(5) # Let the page load
try:
element = browser.find_element_by_xpath("//span[contains(@class,'f_red')]") # get element on page
print element.text # get element text
except NoSuchElementException:
assert 0, "can't find f_red"
browser.close()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2016-05-21
展开全部
Just wondering, Python 不用第三方能干啥?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式