python网络爬虫具体是怎样的?
Python网络爬虫实际上就是一个用python开发的程序,爬虫就好比蜘蛛一样顺着蜘蛛网到达网的每个地方。在互联网上也是同样的道理,好比一个网站,网站里边分布了很多页面链接,通过鼠标点击可以访问到下一层的内容,而网络爬虫就模拟人们访问网页那样,一个一个的打开连接进行访问并按照开发设定的规则抓取信息的这么一个过程。
由于Python的语法简单、学习成本比较低,有众多的开源类库与框架可以使用,使得开发难度与时间大大缩减,得到了大多数人的青睐,特别是在数据处理方面。
在这里推荐几个值得关注的异步爬虫库,给你做下参考。
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。
其最初是为了页面抓取(更确切来说,网络抓取)所设计的,也可以应用在获取API所返回的数据(例如AmazonAssociatesWebServices)或者通用的网络爬虫。
PySpider:一个国人编写的强大的网络爬虫系统并带有强大的WebUI。采用Python语言编写,分布式架构,支持多种数据库后端,强大的WebUI支持脚本编辑器,任务监视器,项目管理器以及结果查看器。
Crawley可以高速爬取对应网站的内容,支持关系和非关系数据库,数据可以导出为JSON、XML等。
4.Portia
Portia是一个开源可视化爬虫工具,可让您在不需要任何编程知识的情况下爬取网站!简单地注释您感兴趣的页面,Portia将创建一个蜘蛛来从类似的页面提取数据。
Newspaper可以用来提取新闻、文章和内容分析。使用多线程,支持10多种语言等。作者从requests库的简洁与强大得到灵感,使用python开发的可用于提取文章内容的程序。支持10多种语言并且所有的都是unicode编码。
Soup
BeautifulSoup是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的.BeautifulSoup会帮你节省数小时甚至数天的工作时间。这个我是使用的特别频繁的。在获取html元素,都是bs4完成的。
Selenium是自动化测试工具。它支持各种浏览器,包括Chrome,Safari,Firefox等主流界面式浏览器,如果在这些浏览器里面安装一个Selenium的插件,可以方便地实现Web界面的测试.Selenium支持浏览器驱动。Selenium支持多种语言开发,比如Java,C,Ruby等等,PhantomJS用来渲染解析JS,Selenium用来驱动以及与Python的对接,Python进行后期的处理。
下面是网络爬虫工作的大致流程图
如何实现在java程序中实现打开某个指定浏览器?
打开浏览器:根据不同平台的默认安装路径找到各个浏览器的可执行文件(也可自行指定浏览器路径),然后用java的Runtime这类的东东开启进程就行了。
进程可附带执行参数,将首参数指定为一个url,就可打开指定页面。
通信:java无法做到与浏览器API交互,因为编译发行的浏览器可执行文件不是内核源码,木有丰富的内置API可供调用。因此,在打开浏览器的时候会指定URL到Selenium的远程服务页上去。
这个页面通过js建立与远程服务器的HTTP连接通信(如长连接,websocket,ajax轮询等)。
当远程代码需要获取、操作本地浏览器DOM、JS等内容时,推送一段指定js源码到浏览器端执行。
执行完成后将结果发送至远端服务器上。以此来实现远端对客户端浏览器页面内容通信。