&emap;&emdp;学完pygame之后,就迫不及待想学python的更多应用了,一直对网络爬虫这个词很好奇,它究竟是怎样爬取网页信息的呢,于是小白就启动学习爬虫的计划啦。
一、爬虫相关知识
1、什么是网络爬虫?
百度百科对网络爬虫的定义是:一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。简单地说,网络爬虫就是我们通过程序模拟浏览器访问网页来大批量地抓取网页信息。
我们可以通过爬虫获取网页的HTML文件,再转化化为可阅读的文本/图片,也包括视频等信息。与直接通过浏览器下载保存的最大区别是,网络爬虫可以批量下载保存。
2、浏览器是如何获取网页页面的?
过程:发送请求+响应请求+解析HTML
当我们再搜索框输入要查询的内容时,我们点击百度,一会儿我们就可以得到需要的页面,这个过程其实分为以下几步:
- 浏览器通过DNS服务器查询域名对应的IP地址(说简单点就是根据输入的www.baidu.com查询对应IP:163.177.151.109)
- 向IP对应的 web服务器 发送请求
- Web服务器响应请求,发送HTML页面
- 浏览器解析HTML文件,展现内容
HTTP请求:浏览器发送http请求的过程
- 用户在地址栏输入URL地址,按下回车键,浏览器会向HTTP服务器发送请求。
- 当我们把输入的URL为http://www.baidu.com的时候,浏览器发送request请求获取url的html文件,web服务器将response文件发送到浏览器。
- 浏览器解析HTML文件,如果HTML链接了其他CSS、JS等文件,浏览器再次发送response请求其他文件。
- 当所有文件下载完后,浏览器根据完整的文件解析内容,将可阅读的网页呈现出来。
3、HTTP协议和URL?
HTTP 和 HTTPS协议:
- HTTP:超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络传输协议,一种发布接受HTML文件的方法。
- HTTPS:全称:(Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。
URL:
解释:统一资源定位符(Uniform Resource Locator),又叫做网页地址,是互联网上标准的资源的地址,它指出文件的位置以及浏览器怎么处理它。
组成:格式: http://host[:port][path]
- http:协议
- host:合法的Internet主机域名或IP地址
- port:端口号,缺省端口为80
- path:请求资源的路径
实例:http://www.baidu.com 、http://115.157.200.135/duty
HTTP对资源的操作:
方法 | 说明 |
---|---|
GET | 请求获取URL位置的资源 |
HEAD | 请求获取URL位置资源的头部信息 |
POST | 请求向URL位置对的资源后附加新的数据 |
PUT | 请求向URL位置储存一个资源,覆盖原来的资源 |
PATCH | 请求局部更新URL位置的资源,即改变部分内容 |
DELETE | 请求删除URL位置处的资源 |
二、使用爬虫爬去页面内容
Python爬虫学习主要包含3个模块:抓取,分析,存储
step1:抓取
我们可以模拟用户访问浏览器,直接从对方服务器获取数据,可以使用requests包、urllib2包和htplib2等包榜知我们抓取数据。使用下面的代码,我们可以抓取百度搜索的html
内容:
import requests
url = "https://www.baidu.com"
response = requests.get(url)
content = requests.get(url).content
print("response headers:", response.headers)
print("content:", content)
反爬:如果我们遇到了反爬机制,我们可以使用代理、设置爬取数据的频率、加上浏览器访问网页必要的参数模拟浏览器访问来处理它。
速度:在爬取信息时,如果数据量较大,我们希望速度快一点时,就可以使用多线程抓取。
step2:分析
分析就是将html文件中的内容解析处我们能够阅读的文本/图片。
step3:存储
分析出内容后就是存储了,我们可以存入文本文件,也可以存入MySQL或MongDB数据库。
常用库:学习爬虫时,我们可以使用很多库来辅助我们,常见的如下:
网络库:urllib、requests、urllib3、
解析器:lxml、beautifulsp、pyquery、xhtml2pdf
爬虫入门相关知识介绍结束啦,学习了很多博客,有了一些了解,还有很多东西没学,加油
第一篇python爬虫笔记完结 cheers ??