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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> Python爬虫 -> 正文阅读

[网络协议]Python爬虫

python爬虫小记

  • GET 方式: 访问某个网页前不需要在浏览器里输入链接之外的东西,因为我们只是想向服务器获取一些资源,可能就是一个网页。
  • POST 方式:访问某个网页前需要在浏览器里输入链接之外的东西,因为这些信息是服务器需要的。 比如在线翻译,我们需要输入点英文句子,服务器才能翻译吧

url : 网址

resp: 响应

decode():字节转字符串

请求过程剖析:

  1. 服务器渲染:在服务器那边直接把数据和HTML整合在一起 统一返回给浏览器

    ??在页面源代码中能看到数据

  2. 客户端渲染:第一次请求只要一个html骨架 第二次请求拿到数据进行数据展示

??在页面源代码中看不到数据

熟练使用浏览器抓包工具

http协议:?浏览器与服务器之间数据交互遵守的协议

请求头的重要内容

  1. User-Agent: 请求载体的身份标识(用啥发送的请求)
  2. Referer : 防盗链(这次请求是从哪个页面来的?反爬会用到)
  3. cookie: 本地字符串数据信息(用户登录信息、反爬的token)

响应头的主要内容:

  1. cookie: 本地字符串数据信息(用户登录信息、反爬的token)
  2. 各种神奇的莫名其妙的字符串

反爬请求头

反爬请求头(UA头)
     即用这些可以反反爬操作不必在用它浏览器自带的代码
     百度 PC UA
User-Agent: Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)

User-Agent: Mozilla/5.0 (compatible; Baiduspider-render/2.0; +http://www.baidu.com/search/spider.html)

request

get()?能向服务器发送了一个请求,请求类型为 HTTP 协议的 GET 方式

post()?也能向服务器发送一个请求,请求类型是 HTTP 协议的 POST 方式

注:在地址栏里输的链接都是get()方式

import requests
url="https://www.sogou.com/web?query=周杰伦"
resp=requests.get(url)
print(resp)
print(resp.text) 注:拿到页面源代码(调用requests库)

? 若被默认程序自动进入,需将其源代码中的network的user-agent内容复制粘到原程序,即

import requests
url="http://www.sogou.com/web?query=周杰伦"
dic={
 "user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 Edg/95.0.1020.44" 
}
resp=requests.get(url,headers=dic)
print(resp)
print(resp.text)

注:加上请求头让服务器信服

import requests
url='https://fanyi.baidu.com/sug'
s=input("请输入你要翻译的英文单词: ")
dat={
    'kw': s
}
resp=requests.post(url,data=dat)
print(resp.json())

requests获取百度翻译,变量为s可以自己随意输入(灵活性),为post型不是get. 发送post请求:发送的数据必须是放在字典中,通过data参数传递。json:将服务器返回的内容直接处理成json()

注:URL中的?后面为参数

使用完毕后记得?resp.close()

数据解析与提取

re解析

正则表达式

代码意义
.匹配除换行符以外的任意字符
\w匹配字母或数字或下划线
\s匹配任意的空白符
\d匹配任意数字
\b匹配单词的开始或结束
^匹配字符串的开始
$匹配字符串的结束
\n匹配一个换行符
\t匹配一个制表符

注:大写为反义

代码意义
\D匹配非数字
\W匹配非字母数字或下划线
\S匹配非空白符
a|b匹配字符a或b
[ ]从文本第一个字符查找中括号内的有无匹配,有则输出,无则跳下一个字符
[^ ]匹配除了字符组中字符的所有字符

量词:控制面前的元字符出现的次数

*重复零次或更多次
+重复一次或更多次
重复零次或一次
{n}重复n次
{n,}重复n次或更多次
{n,m}重复n到m次

贪婪匹配或惰性匹配

.*贪婪匹配
.*?惰性匹配(查最短的数据)

re模块

注:可以给正则前加r

findall :匹配字符串中所有的符合正则的内容

finditer:匹配字符串中的所有内容(返回的是迭代器) 从迭代器中的拿到的内容需要 .group()

search:找到一个结果就返回,返回的结果是match对象 拿数据需要.group()

match:是从头开始匹配

即 lst=re.findall(r"\d+","我的电话是:10086,他的是:10010")

预加载正则表达式:

obj=re.compile(r"\d+")
 注:compile 函数用于编译正则表达式
re.s                      匹配换行符

注:如想要提取正则语句中的指定信息,只需把该.*? 括起来,然后加上??p<>?其中<>里为指定信息的名称

e g:

提取信息思路

  1. 拿到页面源代码 requests
  2. 通过re来提取想要的有效信息 re

strip()?:移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。 注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符

  网络协议 最新文章
使用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:06:56 
 
开发: 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 21:00:16-

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