屏幕抓取动态网页在python与Ghost.py
Screen scraping dynamic webpage in python with Ghost.py
ghost = Ghost()
page, rcs = ghost.open(https://soundcloud.com/passionpit/sets/favorites)
page, rcs = ghost.wait_for_page_loaded()
songs = ghost.evaluate("document.getElementsByClassName('soundTitle__title');")
print songs
我试图使用上面的代码找到所有的html元素在上面的页面上有类'soundTitle__title',但截至目前我的输出是
QFont::setPixelSize: Pixel size <= 0 (0)
({PyQt4.QtCore.QString(u'length'): 0.0}, [])
谁能帮我看看我的问题在哪里?当我在浏览器控制台中运行document.getElementsByClassName('soundTitle__title')
时,我得到了我期望的输出,为什么Python输出不同?或者是否有一些方法让我使用Ghost.py或其他类似的库来获得JavaScript运行后页面的源代码(在使用浏览器开发人员工具检查元素时看到的源代码)?
我得到了这个工作,并建议使用Splinter,它基本上只是运行phantomjs和selenium。
你需要运行pip install splinter
并在你的机器上安装phantomjs,如果你有npm,可以通过下载/解tarring或npm -g install phantomjs
来安装。但总的来说,安装和依赖是最小的和直接的。
下面的代码返回'Ryn Weaver - OctaHate',我假设这是你正在寻找的,虽然没有更多的上下文,我不能完全确定。
from splinter import Browser
browser = Browser('phantomjs')
browser.visit('https://soundcloud.com/passionpit/sets/favorites')
songs = browser.find_by_xpath("//a[contains(@class, 'soundTitle__title')]")
if songs:
for song in songs:
print song.text
else:
print "there aren't any songs"
你还会注意到,我必须做一个xpath-contains来获得你正在寻找的类描述;所以,你可能会遇到一个问题,当试图通过你使用的符号访问那个类-有一个span元素和一个锚元素,两者都包含'soundTitle__title',但据我所知,只有'a'元素有文本,我猜那就是你正在寻找。但如果你想两者都用,你可以用browser.find_by_xpath("//*[contains(@class, 'soundTitle__title')]")
相关文章:
- Django无法通过urls.py配置找到djangular/app.js文件.如何进行故障排除
- 浏览器与gullow和Ghost博客同步
- 获取错误:无法启动Ghost驱动程序
- 如何在CSS中制作ghost元素
- Cytoscape Edgehandles:多个 cy 实例与 Ghost Edgehandles 混淆
- 为什么 Ghost.py 不加载/运行我的Javascript
- 将 Gulp 与 Django manage.py 集成
- Ghost 代码降价块中的行号
- 如何在 ng-repeat 过滤器中传递 HoDjango views.py 上下文数据变量
- Javascript to Django views.py?
- Ghost CMS中的Foreach循环返回null
- "Ghost"ng点击功能
- 我可以在ghost博客条目中使用嵌入式Javascript吗
- 如何传递使用html中复选框选择的表行n将数据传递给views.py-django
- 在Ghost JS中获取N个标记为T的最后帖子
- Ghost.py通过javascript链接
- Node.js、Express&Ghost子目录URL解析错误
- javascript中的Ghost元素
- 如何在使用Ghost.py提交表单后获得下一页
- 屏幕抓取动态网页在python与Ghost.py