用python快速获取动态内容

2024-09-30 01:24:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着用JavaScript生成的Python动态内容(这个视频的视图和评论的数量:http://v.youku.com/v_show/id_XMTM5NTI3NDY3Ng==.html?from=y1.3-idx-uhome-1519-20887.205805-205902.5-2)。在

我熟悉beauthulsoup(运行时间约为0.1秒,但没有JavaScript评估)和Selenium(3秒以上,即使我停用CSS、图像等,但解释JS)。在

有没有一种方法可以在不使用浏览器的情况下在Python中获取JavaScript函数的结果(假设这会减慢Selenium的速度)?在

我的硒代码如下:

# coding=utf-8

import time
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.common.keys import Keys

firefox_profile=webdriver.FirefoxProfile()
#firefox_profile.set_preference('permissions.default.stylesheet',2)
firefox_profile.set_preference('permissions.default.image',2)
firefox_profile.set_preference('dom.ipc.plugins.enabled.libflashplayer.so',2)
driver = webdriver.Firefox(firefox_profile=firefox_profile)
time.sleep(7)

start=time.time()
def getYoukuVideoStats(youkuVideoUrl):
    driver.get(youkuVideoUrl)
    text= driver.find_element_by_id("allnum_cmt").text
    print text

youku_video_urls_full=["http://v.youku.com/v_show/id_XOTU2Nzc3NDYw.html"]

for youkuVideoUrl in youku_video_urls_full:
    try:
        getYoukuVideoStats(youkuVideoUrl)
        print youkuVideoUrl
    except Exception, e:
        print "Error with video: "+youkuVideoUrl
        print str(e)

print time.time()-start

Tags: fromimportidtimedriverseleniumjavascriptfirefox
3条回答

您还可以使用^{},这使得javascript呈现更容易,使其像服务一样,所以您可以像爬虫一般的网站一样继续使用它。在

对于python web抓取,它与scrapy配合使用非常好。在

不,不使用浏览器(不管是可见的还是不可见的(phantomjs)浏览器,都无法获取js代码的结果。在

您确实需要使用浏览器来呈现JS,但是您可以使用无头浏览器,例如phantomjs。这将加快您的运行时间,并且您不会看到浏览器打开。在

相关问题 更多 >

    热门问题