爬虫技术专栏(爬虫学习笔记-01)
21世纪是一个大数据的时代,很多公司都在开展有关数据的业务,比如人工智能,大数据中有一个至关重要的问题,那就是数据的获取方式。
想要获取数据,可以去第三方公司购买(如企查查),也可以在免费的数据网站下载数据(好比国家统计局),或者人工进行收集(问卷调查)。另外就是通过爬虫获取数据。
一般来说,人工采集费时费力,免费数据质量不佳,三方公司的数据也是通过爬虫进行自动采集的。
所以对个人来说,如果能够自己通过爬虫获取数据自然是最理想的渠道。
获取的数据可以在一些app或网页上进行展示,比如常见浏览器的首页
另外自己也可能对数据进行分析,以得出有价值的信息。
爬虫(又称网页蜘蛛,网络机器人)其工作方式就是模拟浏览器进行发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。
原则上只要是浏览器能做的事情,爬虫都能够做。
根据被爬网站的数量的不同,我们可以把爬虫分为两类,通用爬虫以及聚焦爬虫。
通用爬虫:通常指搜索引擎上的爬虫。如百度。通用爬虫覆盖范围广,但是搜索到的信息杂且乱,还有很多的广告。
聚焦爬虫:针对特定网站的爬虫。获取的信息相对比较精准,是针对特定对象爬取的信息。
爬虫可以简单地分为四个步骤:获取资源地址,发送请求获取数据,提取信息,保存数据。
爬虫首先要做的工作就是获取数据的资源地址,有了准确的地址我们才能根据相应的信息去发送相应的请求进行提取数据
第二步要做的工作就是获取网页,这里获取的是网页的源代码,源代码中包含了网页的部分有用信息,所以,只要把源代码获取下来,就可以从中提取出想要的信息。
获取到源代码后,接下来要做的就是分析网页源代码,从中提取我们想要的数据。通用的方法是使用正则表达式提取,这是一个比较万能的方法,但是在构造正则表达式时比较复杂 且易出错。另外因为网页的结构有一定的规则,所以还有一些根据网页节点属性、css选择器或Xpath来提取网页信息的库,如Beautiful Soup、pyquery、lxml等。使用这些库,我们可以高效快速地从中提取网页信息,如节点 的属性、文本值等。提取信息是爬虫非常重要的部分,它可以使杂乱的数据变得条理清晰,以便我们后续处理和分析数据。
提取到信息后,我们一般会将提取到的数据保存到某处以便后续使用。这里保存形式多种多样,如可以简单保存为txt文本或json文本,也可以保存到数据库,如MySql 和MongoDB等,也可保存至远程服务器,如借助Sftp进行操作等。
http基本原理
URL
URL 的全称为Universal Resource locator,即统一资源定位符。
例子:
HTTPS://www.baidu.com/item/10056474?fr=aladdin
http://IP:port/资源路径/?wd=python#flg
协议:这代表网页使用的请求协议,如http协议,或https协议。
域名部分:该URL的域名部分为“www.baidu.com”。一个url中,也可以使用IP地址作为域名使用:202.108.22.5。域名的底层都 是通过ip地址进行访问的。
端口部分:跟在域名后面的是端口,域名和端口之间使用“:”作为分隔符。端口不是一个URL必须的部分,可以省略端口部分。
资源部分:从域名后的最后一个“ / ” 开始到“ ? ”为止,浏览器中搜索的网页后面的资源部分有很多都 是可以删除的(自行判断 是否需要删除,它是对搜索内容加载的相应的其他特征,但可能一个特征就足以搜索到想要的内容。)。
查询参数:从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分
超文本
其英文名叫做hypertext,我们在浏览器里看到的网页就是超文本解析而成 的,其网页源代码是一系列HTML代码,里面包含了一系列标签,比如img显示图片,p指定显示段落等。浏览器解析 这些标签后,便形成了我们平常看到的网页,而网页的源代码html就可以称作超文本。
HTTP和HTTPS
在百度的首页http://www.baidu.com/,中,URL的开头会有http或https,这个就是访问资源需要 的协议类型,有时我们还会看到ftp、sftp、smb开头的url,那么这里的ftp、sftp、smb都是指的协议类型,在爬虫中,我们抓取的页面通常就是http或https协议的,我们在这里首先来了解一下这两个协议的含义。
HTTP的全称是Hyper Text Transfer Protocol,中文名叫做超文本传输协议
- 超文本传输协议
- 默认端口号:80
HTTPS的全称是Hyper Text Transfer Protocol over Secure Secure Socket Layer,是 以安全为目标的传输协议。
- HTTP SSL(安全套接字层),即带有安全套接字层的超文本传输协议
- 默认端口号:443
HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,简称为HTTPS。
HTTP的请求过程
- 浏览器先向地址栏中的 url 发起请求,并获取相应的ip地址
- 在返回的响应内容(html)中,会带有css、js、图片等url地址,以及ajax代码,浏览器按照响应内容中的顺序依次发送其他的请求,并获取相应的响应。
- 浏览器每获取一个响应就对展示出的结果进行添加(加载),js,css等内容会修改页面的内容,js也可以重新发送请求,获取响应。
- 从获取第一个响应并在浏览器中展示,直到最终获取全部响应,并在展示的结果中添加内容或修改----这个过程叫做浏览器的渲染
注意:
但是在爬虫中,爬虫只会请求 url 地址,对应的拿到 url 地址对应的响应(该响应的内容可以是html , css , js , 图片等 )
浏览器渲染出来的页面和爬虫请求的页面很多时候并不一样
所以在爬虫中,需要以 url 地址对应的响应为准来进行数据的提取。
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com