爬虫是什么 网络爬虫的简单了解

网络爬虫(又被称为网页[蜘蛛],网络机器人,在[FOAF]社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取[万维网]信息的程序或者脚本。另外一些不常使用的名字还有[蚂蚁]、自动索引、模拟程序或者[蠕虫]--百度百科

爬虫是什么

举个简单的例子,用百度搜索壁纸,就会出来一堆结果,有直接的图片,有壁纸网站,当然还有各种各样的小广告,而每个结果都包含一个链接(百度本身也是一个链接),通过每个链接又可以点击进去,获取到更多的链接,更多的资源,就像蜘蛛结网一样扩散出去,获取到大量的资源。

学python也挺长时间了,刚开始肯定是为了学爬虫的,然后看网上的教程看了几个星期,然后发现并没有讲到爬虫。
5c6a36f313bad30012d45c23_0.jpg

然后就放下了,放下了,放下了。

对,开始写爬虫是几年后了,所以说学python也好几年了,没毛病。
所以,如果你学了python,然后对于爬虫还是两眼一抹黑的话,可以看看。
首先,平常用到的爬虫其实没有那么高大上,什么无限扩散出去什么的。基本上就是一个网址,然后解析数据,把自己需要的信息(图片或视频等)保存下来。一页的数据不够呢,加个循环

for x in range(1,100)

网址稍微改一下,还不够呢,加个死循环

while 1:

当获取数据为0的时候跳出。嗯,这就是一个相当完整的爬虫了。

解析数据

网址没什么好说的,简单说下解析数据。

  1. 最基本的,一个网址url,我们直接获取他的返回值,然后解析。
import requests
url='https://www.baidu.com/'
response=requests.get(url).content
print(response)

结果清晰,就是数据量很大,虽然用正则或者lxml解析也不费事,但效率不会太高。(而且很多的异步加载是获取不到数据的)

  1. 高级一点,F12打开开发者工具,直接去找接口。
import requests
url='https://api.github.com/events'
response=requests.get(url).content
print(response)

结果更清楚,因为一般都是格式化的数据,不需要太复杂的解析。但对于很多需要登录的网站来说这里就涉及到cookie的问题,有很多页面是需要你登录之后才能看的,所以对于cookie的获取与保存是个难点。

  1. 偷懒一点,selenium,这个应该更靠近自动化一点。
    selenium简单来说就是操纵你的浏览器的工具,当你给他一个网址的时候,他就自动打开你的浏览器,然后打开网址,获取结果。
from selenium import  webdriver
url='https://www.baidu.com/'
driver=webdriver.Chrome()
driver.get(url)
response=driver.page_source
print(response)

selenium的好处就是可以不用去找接口,也不用找cookie,找token等等,你甚至可以手动输入账号密码,然后再获取数据。就是简单的把你需要自己动手的下滑加载更多交给了它,缺点也很明显,比较慢。
基本上这三种方法就可以把大部分网址都解决掉了,有时候甚至可以合作使用,比如selenium先登录,然后获取了参数再调用接口,效率会高很多。

推荐阅读更多精彩内容