
最近需要写一个爬虫,逻辑上有一个环节是取得一个页面的所有资源加载链接(html5页面)
(ps:python下的确是是有个第三方包叫Ghostpy可以取得,但是尝试后效果并不好,估计是因为Ghostpy的webkit对html5的支持并不好。)
选择用selenium,但是没找到selenium的webdriver下取得所有资源加载链接的方法。
selenium包下有一个selenium模块。查看源码时看到有个get_all_links方法。但是一直没找到这个模块的用法。
最后,求解答。谢谢大家。
方法不成的话,就自己do
it把:
all_links
=
browserfind_element_by_xpath('//a')
for
a
in
all_links:
agetAttribute('href')
你好,看了你的代码,id值为:rb_btn的li标签是没有click方法的,所以你的点击才会无效。li标签下的子标签a有click方法。因此建议获取到a标签来调用click()。
希望能帮到你。
想得到网易云音乐 听见好时光中的专辑信息(歌名及歌曲编号),但使用urllib2时urlopen出来的源代码为网页源代码,而专辑信息是在iframe中的,无法在网页源代码中得到。
请问要怎么获取iframe的源代码,或者怎么直接获取到专辑的信息
from selenium import webdriverbrowser = webdriverChrome()browserget("om/#/albumid=145852")browserswitch_to_frame('g_iframe')print('专辑名字:', browserfind_element_by_class_name('f-ff2')text)for each in browserfind_elements_by_css_selector('a[href^=\/song]'):
print("歌曲名字:",eachtext)
输出:
专辑名字: Better Than a Fairy Tale
歌曲名字: Messenger
歌曲名字: Way of the World
歌曲名字: Princess
歌曲名字: Smiling Down On Me
歌曲名字: Evergreen
歌曲名字: Never Never Land
歌曲名字: Better Than a Fairy Tale
1、直接打开selenium的主界面,按照File→New→Class的顺序进行点击。
2、下一步,需要在d出的窗口中设置相关内容并确定创建。
3、这个时候,输入获取元素属性的对应代码。
4、如果没问题,就按照图示启用取得id值的功能。
5、等完成上述 *** 作以后,继续通过对应网页选择图示按钮跳转。
6、这样一来会得到相关结果,即可达到目的了。
selenium是一个chrome浏览器为核心的WEB测试框架,以前也有类似的其它框架。你甚至可以用pyqt自己开发一套也不是不成。
你可以先安装selenium ide熟悉一下它的使用方式。 然后你找一个教程。这里就不给URL里了。
按它的说明在linux下安装好selenium,记住驱动的版本要与你的chrome版本完全一致。这个是因为它们背后用的qt库如果不一致,就没有办法接起来。
然后试试下面的代码。
#coding:utf-8from selenium import webdriver
driver=webdriverChrome()
driverget('
)
print drivertitle
driverquit()
应该可以打印出 网站的名称。 这就对了。 详细的内容,可以慢慢看教程。也可以直接看selenium的源代码。里面有完整的接口。
另外你还需要知道一些浏览器的JS知识,还有DOM的知识。HTML的知识当然也必不可少。
如果仅仅是判断404,可能用不着selenium, 你直接用urlliburlopen(url),判断返回的响应中的status code就可以了。略略看一下python关于urllib的帮助就可以了。
学习也是一个工作,摸索找到你的答案同样也很重要的一个工作。
有网友碰到过这样的如何用python的selenium提取页面所有资源加载的链接,问题详细内容为:如何用python的selenium提取页面所有资源加载的链接,我搜你通过互联网收集了相关的一些解决方案,希望对有过相同或者相似问题的网友提供帮助,具体如下:
解决方案1:
用浏览器打开你那个连接(完整加载),通过 查看源 找到你要的数据(记住标记,比如某个元素),selenium+python获取到页面代码再去判断查找你的标记就知道是否加载完了。
用python selenium提取网页中的所有<a>标签中的超
答:提取所有链接应该用循环: urls = driverfind_elements_by_xpath("//a")for url in urls: print(urlget_attribute("href"))如果get_attribute方法报错应该是没有找到a标签对象,如果确定是有的话,可能是页面加载比较慢还没加载出来,selenium
如何用python的selenium提取页面所有资源加载的链接
答:用浏览器打开你那个连接(完整加载),通过 查看源 找到你要的数据(记住标记,比如某个元素),selenium+python获取到页面代码再去判断查找你的标记就知道是否加载完了
动态网页抓取 (解析真实地址 + selenium)
由于网易云跟帖停止服务,现在已经在此处中更新了新写的第四章。请参照文章:
前面爬取的网页均为静态网页,这样的网页在浏览器中展示的内容都在HTML源代码中。但是,由于主流网站都使用JavaScript展现网页内容,和静态网页不同的是,在使用JavaScript时,很多内容并不会出现在HTML源代码中,所以爬取静态网页的技术可能无法正常使用。因此,我们需要用到动态网页抓取的两种技术:通过浏览器审查元素解析真实网页地址和使用selenium模拟浏览器的方法。
本章首先介绍动态网页的实例,让读者了解什么是动态抓取,然后使用上述两种动态网页抓取技术获取动态网页的数据。
4动态抓取的例子
在开始爬取动态网页前,我们还需要了解一种异步更新技术—AJAX(Asynchronous Javascript And XML,异步JavaScript和XML)。它的价值在于通过在后台与服务器进行少量数据交换就可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下对网页的某部分进行更新。一方面减少了网页重复内容的下载,另一方面节省了流量,因此AJAX得到了广泛使用。
相对于使用AJAX网页而言,传统的网页如果需要更新内容,就必须重载整个网页页面。因此,AJAX使得互联网应用程序更小、更快、更友好。但是,AJAX网页的爬虫过程比较麻烦。
首先,让我们来看动态网页的例子。打开笔者博客的Hello World文章,文章地址为:>
为了验证页面下面的评论是用JavaScript加载的,我们可以查看此网页的网页源代码。如图4-2所示,放置该评论的代码里面并没有评论数据,只有一段JavaScript代码,最后呈现出来的数据就是通过JavaScript提取数据加载到源代码进行呈现的。
除了笔者的博客,还可以在天猫电商网站上找到AJAX技术的例子。例如,打开天猫的iPhone XS Max的产品页面,单击“累计评价”,可以发现上面的url地址没有任何改变,没有重新加载整个网页并对网页的评论部分进行更新,如图4-3所示。
如图4-4所示,我们也可以查看此商品网页的源代码,里面并没有用户评论,这一块内容是空白的。
如果使用AJAX加载的动态网页,怎么爬取里面动态加载的内容呢?有两种方法:
(1)通过浏览器审查元素解析地址。
(2)通过Selenium模拟浏览器抓取。
没有不能查看源代码的网页,点一下F12。
或者:
1、抓包,找到真正的url,模拟post或get;
2、用selenium+phantomjs 或firefox 或chrome。
以上就是关于如何用python的selenium提取页面所有资源加载的链接全部的内容,包括:如何用python的selenium提取页面所有资源加载的链接、selenium模拟访问网页问题、用Python怎么得到网页中iframe的源代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)