py spider 第一天

总结: selenium只是个虚拟的浏览器,或者说是一个web自动化测试工具,而不是真正意义上的爬虫框架

一、Scrapy

Scrapy A Fast and Powerful Scraping and Web Crawling Framework

关键词是和,使用过确实感觉如此。我感觉就是一个全家桶,它把爬虫所需要的大部分东西(为什么不是全部,下面会说到)都集成到这个框架中,如:下载器、中间件、调度器、Spider、调试、数据流等等所有功能全部都在这一个框架中,你所需要做的只是在命令行中输入:

Scrapy 的缺点也是显而易见的:不支持分布式。scrapy中scheduler是运行在队列中的,而队列是在单机内存中的,服务器上爬虫是无法利用内存的队列做任何处理。但是也有解决办法,参见rmax/scrapy-redis

二、selenium

selenium :最后来到今天的主角Selenium, 首先看看官方怎么说

What is Selenium?

Selenium automates browsers. That’s it! What you do with that power is entirely up to you. Primarily, it is for automating web applications for testing purposes, but is certainly not limited to just that. Boring web-based administration tasks can (and should!) be automated as well.

Selenium has the support of some of the largest browser vendors who have taken (or are taking) steps to make Selenium a native part of their browser. It is also the core technology in countless other browser automation tools, APIs and frameworks.

重点是:,翻译过来就是:它是用于自动化Web应用程序的测试目的,但肯定不仅限于此,简单来说,Selenium 是web自动化测试工具集,如果你去Google上搜索 Selenium ,大多结果都是相关内容,比较出名的有博客园的虫师,写的两本书也都是关于自动化测试方面的

至于为啥爬虫要用selenium,我在某些博客上找到有人这样说,我也不知道怎么说

对于一般网站来说scrapy、requests、beautifulsoup等都可以爬取,但是有些信息需要执行js才能显现,而且你肉眼所能看到的基本都能爬取下来,在学习中遇到了,就记录下来方便以后查看。

webdrive是selenium中一个函数:

from selenium import webdriver

driver = webdriver.Chrome()

driver.get(‘网址’)

其中PhantomJS同时可以换成Chrome、Firefox、Ie等等,但是PhantomJS是一个无头的浏览器,运行是不会跳出相应的浏览器,运行相对效率较高。在调试中可以先换成Chrome,方便调试,最后再换成PhantomJS即可。

下面是吐槽时间,说一说的缺点:

速度慢。每次运行爬虫都打开一个浏览器,如果没有设置,还会加载图片、JS等等一大堆东西;

占用资源太多。有人说,把换成无头浏览器,原理都是一样的,都是打开浏览器,而且很多网站会验证参数,如果对方看到你是以去访问,会BAN掉你的请求,然后你又要考虑更换请求头的事情,事情复杂程度不知道多了多少,为啥学Python?因为Python简单啊,如果有更快、更简单的库可以实现同样的功能,为什么不去使用呢?

对网络的要求会更高。加载了很多可能对您没有价值的补充文件(如css,js和图像文件)。 与仅仅请求您真正需要的资源(使用单独的HTTP请求)相比,这可能会产生更多的流量。

**

BeautifulSoup

BeautifulSoup是一个模块,该模块用于接收一个HTML或XML字符串,然后将其进行格式化,之后就可以使用他提供的方法进行快速查找指定元素,从而使得在HTML或XML中查找指定元素变得简单。

四大对象种类:
Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种:

Tag:HTML 中的一个个标签,比如a,div等,有两个属性name和attrs

NavigableString:标签内部的文字,可以用 .string获得

BeautifulSoup:表示的是一个文档的全部内容

Comment:注释
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章