也曾多次迷茫过,该如何爬取动态网页。
静态网页的爬取,无非就那么几下子,再怎么来也是解析和算法的设计问题了,但总有种不知道该怎么进步的感觉。
由于身边的动态网页太多,要想练练手,接触到动态网页的机会实在是太多了。
对于动态网页的爬取,一般来说,有两招:
- Selenium技术,俗称“霸王硬上弓”。
通俗易懂。这项技术,也有个名字叫做自动化测试
,也就是说,自动的打开浏览器,自动的运行起来。想想其实这个也是很酷的。
但说实话,这个东西一般很少用。原因很简单。因为这个实在是太慢了(模拟人使用网页的方式,比电脑还是慢很多的啦~)。不过了,要是对于爬虫的理解还不够,先学学这个也挺好的。
为什么呢? 这个库,除了安装的时候需要将自动化的 浏览器driver放到python所在路劲下以外,其他都是一样,直接安装包就好了。 要说到它的使用,只能说这个好用,它代码写的太漂亮了,所有的函数都是跟英语一样。你只要看到函数名,基本上就可以知道这个函数是干嘛的呢。这么看来,这个库确实适合理解了点静态网页的新手还是非常友好的!
当然,肯定还是有很多其他类似技术的,但这些都是技术类爬取方式,掌握一个也就够了。下面的方法才是正道
- 理解网页!
别看我说的很浮夸的样子,其实就是这么简单。
首先
,我假设各位已经掌握了静态网页的爬取,那么,我想各位肯定是对正则表达式,lxml,bs4。这些库都已经很熟悉了。
其次
,你需要理解网页呈现的过程。其实非常简单,无非就是,浏览器给服务器发请求;服务器接受到请求之后,检验请求,并根据得到的信息,返回相应的网页代码和渲染方式, 本地浏览器接受到了这些东西之后,就在本地浏览器的显式框上进行展示。 就这么简单。 这也就是为什么chrome还有firefox等浏览器那么容易就 可以得到网页的源代码了。
上面两步其实都非常容易完成,只要你是学过静态网页爬取的
再来
, 你必须要有一个好的工具。我一般是选择用Chrome,但据我所知,FireFox在这方面也是很强大的。在这,我做了一个如何用好Chrome进行爬虫的展示,点击这里可以看
最后
,通过上面的使用类似Chrome这样强大的工具,你是很容易得到,浏览器是如何得到这些信息的。你知道方法之后,那么?请问你知道方法之后,还不能自己用静态网页的类似的方法给拿到么?
(动态的网页的信息, 不是用原来的网页本身的代码,而是要看具体的Request URL
,有些人的网页甚至是在request到一个完全没有听说过的域名上,然后再从那掉过来的)
最后,想说的是。那个网页只要找到了对应的想要的包的请求方法,就直接看Chrome是怎么得到对应为网页信息的。自己做类似的操作,就可以进行所谓的动态网页爬取了。
其实就这么简单,希望能帮到更多的人吧。当然,欢迎有不同意见的人进行讨论和指正!
网友评论