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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 爬虫复盘3 爬虫基础-实现方式 -> 正文阅读

[网络协议]爬虫复盘3 爬虫基础-实现方式

网络爬虫的第一步结束根据url 获取 网页html信息在python3可以去使用urllib.request 和requests 进行网页数据获取
这里我们用request
urllib 库一般苦涩难用不推荐新手用
requests 库是第三方库,需要我们自己安装
pip3 install requests

1.获取网页内容

import requests

url = 'https://www.bxwxorg.com/read/20/'
# 获取网页内容
response = requests.get(url)
# 获取网页相关信息
print(response.headers)
print(response.cookies)
print(response.status_code)
print(response.text)
print(response.content)
text 返回的是Unicode 型的数据
content 返回的是是二进制的数据
在Python3默认编码是 unicode,utf-8 可以看做是 unicode 的一个扩展集。所以text可以直接输出网页内容,而 content 输出的是字节码
编码问题

Python3 当遇到 gbk 编码的网页时,如果未指定编码类型,会出现乱码,这时候有以下两种方法解决乱码:
# 方法1. response设置编码方式
response.encoding = 'gbk'
# 此时text输出为中文
print(response.text)

# 方法2. content内容进行解码
print(response.content.decode('gbk'))

爬虫伪装
当你的爬虫不能被服务器识别为真正的浏览器访问时,服务器则不会给你返回正确的信息,这个时候就必须对爬虫代码进行伪装。

HTTP部分请求头部(HEADER)包含:
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cache-Control: max-age=0
Host: www.baidu.com
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36

Connection
允许客户端和服务器指定与请求/响应连接有关的选项:keep-alive:长连接;

Accept

指定客户端能够接受的内容类型,在这唯一要提醒的就是它只是建议服务器,而并非就是你写成什么他就返回给你什么。

Accept-Encoding

浏览器发给服务器,声明浏览器支持的编码类型

Accept-Language

请求头允许客户端声明它可以理解的自然语言,以及优先选择的区域方言。

Upgrade

给出了发送端可能想要"升级"使用的新版本和协议

User-Agent

向访问网站提供你所使用的浏览器类型及版本、操作系统及版本、浏览器内核等信息的标识。给出发送端使用的MIME版本

referer

用于告诉服务器我是从哪个页面链接过来的。用于统计访问量、防外连接等

设置 header

headers = {‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36’,
‘Referer’: ‘http://www.quanshuwang.com/book/44/44683’,
‘Accept’: ‘text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8’,
‘Accept-Encoding’: ‘gzip, deflate, br’,
‘Accept-Language’: ‘zh-CN,zh;q=0.9’
}

设置headers

response = requests.get(url = url, headers = headers)

爬虫登陆
1.通过账号密码登录
login_url = ‘https://xxxxx.com/login’

设置登录名与密码

form_data = {‘username’:‘’, ‘password’:'’}
headers = {‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36’,
‘Accept’: ‘text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8’,
‘Accept-Encoding’: ‘gzip, deflate, br’,
‘Accept-Language’: ‘zh-CN,zh;q=0.9’
}
response = requests.post(login_url, data=form_data, headers=headers)

2.通过历史cookie登陆

raw_cookies = "k1=v1; k2=v2; k3=v3"; 
cookies = {}
# 设置cookies数据
for line in raw_cookies.split(';'):  
    key,value=line.split('=',1)  
    cookies[key]=value  
login_url = 'http://xxxxxx.com'  
response = requests.post(login_url,cookies=cookies)  
print(response.text)  
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-09-04 17:54:21  更:2021-09-04 17:56:52 
 
开发: 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年11日历 -2024/11/16 20:44:55-

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