动态网页抓取 (解析真实地址 + 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模拟浏览器抓取。
您好,您这样:
while(currentPageLinkNumber<MaxPage)
{
WebElement PageLink;
PageLink = driverfindElement(Byxpath("//a[@class = 'PageLink' and @title ='"+IntegertoString(currentPageLinkNumber+1)+"']"));
PageLinkclick();
currentPageLinkNumber++;
//OtherOperation();
}
作为在传智刚刚学完这测试段课程的人,来给你简单描述一下,我用的是webdriver,如果你的目标是点击一个超链接,就需要通过以下步骤来进行:
1首先你要先获取到这个超链接元素(标签)的属性信息(id,name,位置,或者超链接文本)
2然后根据属性信息选择合适的定位方法,超链接一般常用链接文本进行定位使用浏览器对象调用find_element_by_link_text(),定位返回元素
3注意定位到元素之后就可以使用元素对象提供的点击方法(click()),执行点击 *** 作
以上就是关于selenium官网是动态网页吗全部的内容,包括:selenium官网是动态网页吗、selenium webdriver 获取标签属性的方法,为什么只能获取182个字符,怎样获取更多、Selenium是怎么点击页面上的东西的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)