IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 爬虫入门(1) 2021-11-15 -> 正文阅读

[网络协议]爬虫入门(1) 2021-11-15

写在前面:

? ? ? ? 本文以及今后可能发布在本专栏的文章,实际为本人的学习内容输出,写作流程为学习后笔记记录,记录之后整理用尽可能不同的语言作输出,由于笔者水平有限,本专栏仅能看作小白的学习历程,如果能对读者朋友有丝毫微不足道的帮助,笔者欣喜难表。将自己当天或数天学习内容以博客形式做二次输出为本学期以来一直想做但搁置的事,现开始付诸实践,若文章内容有所不妥,还望告知,感激不尽。更新频率希望能保证一周三更以上(作为自我挑战立下的flag),以后“写在前面”可能以“发些牢骚”的形式出现,分享部分当日感想,趣事,或以吐心中块垒。


目录

爬虫入门

爬虫基础

什么是网络爬虫

Http协议

chrome抓包

爬虫基础库的使用

urllib

urlopen函数

urlretrieve函数

urlencode与parse_qs

添加请求头

小结与实例

爬取猫眼票房数据

知乎模拟登录


?爬虫入门

文章内容:

爬虫基础(chrome抓包使用与HTTP协议)

爬虫基础库的使用(urllib库基本使用、简单爬虫流程、猫眼数据与知乎登录)


爬虫基础

什么是网络爬虫

通俗理解:爬虫是一个模拟人类请求网站行为的程序。可以自动请求网页、并把数据抓取下来,然后使用一定的规则提取有价值的数据。

Http协议

1、Http协议:全称是HyperText Transfer Protocol,中文意思是超文本传输协议,是一种发布和接收HTML(HyperText Markup Language)页面的方法。服务器端口号是80端口。 HTTPS协议:是HTTP协议的加密版本,在HTTP下加入了SSL层。服务器端口号是443端口。

2、url详解:

????????URL是Uniform Resource Locator的简写,统一资源定位符。 一个URL由以下几部分组成:

? ? ? ? 访问协议:一般为http或者https以及ftp等

? ? ? ? 主机名:域名,比如www.baidu.com

? ? ? ? 端口号

? ? ? ? 查找路径:跟在域名后www.jianshu.com/trending/now

? ? ? ? 查询字符串:跟在?后www.baidu.com/s?wd=python

? ? ? ? 锚点:用作页面定位或导航

? ? ? ? 浏览器会对url进行编码,所以我们常会在导航栏看到一堆乱码,除英文字母,数字和部分符号外,其他的全部使用百分号+十六进制码值进行编码。

3、请求方法

?4、请求头参数

? ? ? ? 我们用HTTP协议发送请求时,数据分为三部分:url,body,head

? ? ? ? 常用head:

????????User-Agent:浏览器名称。这个在网络爬虫中经常会被使用到。请求一个网页的时候,服务器通过这个参数就可以知道这个请求是由哪种浏览器发送的。如果我们是通过爬虫发送请求,那么我们的User-Agent就是Python,这对于那些有反爬虫机制的网站来说,可以轻易的判断你这个请求是爬虫。因此我们要经常设置这个值为一些浏览器的值,来伪装我们的爬虫。

????????Referer:表明当前这个请求是从哪个url过来的。这个一般也可以用来做反爬虫技术。如果不是从指定页面过来的,那么就不做相关的响应。

???????? Cookie:http协议是无状态的。也就是同一个人发送了两次请求,服务器没有能力知道这两个请求是否来自同一个人。因此这时候就用cookie来做标识。一般如果想要做登录后才能访问的网站,那么就需要发送cookie信息了。(就是浏览器老是弹出来的那个“我们使用了cookie技术”)

chrome抓包

打开chrome浏览器(或者其它也行):右键->检查或者按下F12即可进行抓包

前面提到的url,User-Agent,Cookie都可以在抓包界面的“网络”下找到


爬虫基础库的使用

urllib

urllib库是Python中一个最基本的网络请求库。可以模拟浏览器的行为,向指定的服务器发送一个请求,并可以保存服务器返回的数据。urllib是Python自带的标准库,无需安装,直接可以用。

urlopen函数

from urllib import request
resp = request.urlopen('http://www.sogou.com')
print(resp.read())
#建立一个对象来获取远程数据

?函数的返回值为http.client.HTTPResponse对象。有read(size)、readline、readlines以及getcode等方法。

urlretrieve函数

这个函数可以方便的将网页上的一个文件保存到本地。

request.urlretrieve('https://www.sogou.com', 'sogou.html')
# urlretrieve详解
# urlretrieve将网页文件保存到本地
# def urlretrieve(url, filename=None, reporthook=None, data=None)

urlencode与parse_qs

from urllib import parse

data = {'name': '爬虫基础', 'greet': 'hello world', 'age': 100}
qs = parse.urlencode(data)  # 传进字典,把汉字转为十六进制编码
# urlencode详解
# 向浏览器发送请求时,汉字和一些字符会转换为编码
# urlencode使用时传入内容是字典
# print(parse.parse_qs(qs))#解码

# urlparse和urlsplit
# parse.urlparse(url)返回超文本链接的组成
# parse.urlsplit(url)返回超文本链接的组成无params

添加请求头

如果刚才不爬取搜狗而去爬取百度,我们会发现爬取失败,因为百度做了反爬虫举措,我们可以通过添加请求头解决这个问题。

# request.Request类
# 增加一些请求头
headers={
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko)Chrome/95.0.4638.54 Safari/537.36"
}
rq=request.Request('https://www.baidu.com/?tn=62095104_34_oem_dg',headers=headers)
resp=request.urlopen(rq)
print(resp.read())

小结与实例

通过上面的爬取演示,我们可以总结简单爬取流程如下

定义统一资源定位符url->定义字典型变量headers,里面装我们需要的请求头->使用request.Request建立对象用以解析->使用request.urlopen函数解析对象并保存或输出

爬取猫眼票房数据

from urllib import request

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36"
}
url = 'https://piaofang.maoyan.com/dashboard/'

rq = request.Request(url=url, headers=headers)
resp = request.urlopen(rq)
print(resp.read().decode('utf-8'))  # 解码

知乎模拟登录

现在网络上大多数论坛类网站都有用户登录功能,而我们在爬取这些网站信息是可能就会遇到登录问题,于是我们需要学习如何使用cookie进行登录模拟

# 为了辨别用户身份,进行session跟踪而储存在用户本地的数据
# cookie包含:
#     Name
#     value
#     expires:过期时间
#     path
#     domain:域名
#     SECURE:是否只在https下起作用

?方法一:

直接在headers字典中直接添加你在登录界面中寻找到的cookie

方法二:

使用http.cookiejar函数(更高端且灵性)

但是我现在实在太困了,鸽一下把使用http.cookiejar放在下次内容将吧,明天(今天)早上直接进行一个早八的翘兄弟们。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-11-17 13:06:20  更:2021-11-17 13:08:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年7日历 -2024/7/3 20:45:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码