Python 认识爬虫

Python 认识爬虫

学习,从开始准备,愿意动手动脑去看,去学习,去敲代码,去复习,去写笔记。完成了这整个流程,才知道自己也可以做得到得。别笑话我,我是很懒,所以现在没什么成就,但是现在知道要好好学习了,应该不算晚。别人都坐飞机了,自己还在蹬自行车,还是得自律起来,好好学习。互勉。好像扯远了。抱歉



前言

爬虫,现在网络上很火得名词。在这个大数据时代,数据决定了很多东西,从而获取数据,分析数据得工具或者方法就成了香饽饽得东西,从而市场就越发大了(以前也有,只不过没有那么显眼)。并且现在配合AI智能,让以前更多自动化的需求和想法都很容易就实现了。


一、爬虫是什么?

个人理解:自动化数据获取,整理和分析,模拟人类的操作,代替人类手动的参杂,快速生成我们需要数据。
不过毕竟只是工具 ,真正实施和操作的还是背后的人。所以爬虫也不是万能的。

1.爬虫分类

爬虫基本分为以下三类(以网页为例子):
普通爬虫:获取整个页面的数据
聚焦爬虫:从整个页面的数据中获取重要的部分数据
增量爬虫:从网页中获取网页中更新后的数据

二、网络基本需要知道的

1.了解网络

什么是协议:是计算机之间为了是西安网络通信而达成的一种规则和约定
http : 超文本/标记语言/html 传输 协议
Get : 向服务器拿数据 没有数据限制
POST : 向服务器上传数据 有字节限制

提示: 上概括的比较简单,实际上里面有很多知识点,这里先做做笔记,后面自己再针对自己的不知道,做下新的笔记

2.请求数据的基本流程和方法

1: 要知道你想找数据的 网页 url,就是一个网页地址
2: 通过链接 请求,定位到你想要的页面
3: 通过正确的请求地址,进行请求,接收到回应,返回文本
4: 将数据进行处理,显示或者保存在本地,自己再处理数据

# Response 响应
# Request 请求
# Headers 请求头

# 发起请求的过程
# 请求行(url  协议 请求方式get)
# 请求头(头部信息 User-Agent)
# 请求体(请求参数)

# 由用户输入URL开始,附带需要请求的参数信息(请求类型通常为GET,通过http协议发送到服务器。
# 然后服务器将请求进行处理后生成响应,通过http协议返回到客户端。
# 客户端解析后,会通过状态码告诉请求的结果的类型(成功,失败或者其他类型)
# 客户端会根据返回的html和Jason数据渲染成客户端可视化的数据呈现在界面上


三.request请求

上面说到有Get()和Post()这两中请求的方法,下面试下一下简单的用法:
提示:在对应的网页上右键-检查-网络-Fetch/XHR在选项中,选中自己请求的那个链接,就会出现,标标头,负载,预览,响应等等信息,脚本中需要配置的参数或者格式都可以在上面找到。

1.Get()

import requests
url = 'https://www.baidu.com'
# 向目标网站发起请求,并获取数据
resp = requests.get(url)
# 出现乱码,1:查看编码方式, 2:设置请求指定编码方式
resp.encoding = 'utf-8'
print(resp.text)

上面使用到了Get(),传入一个网页地址,即可获取到了整个页面的文本数据
当然,我们在模拟网页请求数据的时候,往往是携带了很多参数和配置进行请求的。
如下脚本:

import requests
from urllib.parse import urlencode
# 浏览器的标志,这个基本是必带的参数,可以从网页上面复制下来就行
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.50",
}
url = 'https://www.duitang.com/search/?'

# 这个就是根据你所请求的网页链接中是否需要携带参数,需要就加上
params = {
    'kw': '美女',
    'type': 'feed'
}

# urlencode 将字典对象转化为url请求参数
# 如果不需要携带参数的话,这里就不需要用到拼接了
url = url + urlencode(params)
# 向目标网站发起请求,并获取数据,headers添加伪装
resp = requests.get(url, headers=headers)
# 这里是设置请求的编码,返回文本如果格式相同就不会成乱码了
resp.encoding = 'utf-8'
print(resp.text)

2.Post()

如下脚本:

import requests
import json
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.69",
}

# post请求
url = "https://fanyi.baidu.com/v2transapi?from=zh&to=en"

# 以下数据都是基于我的电脑请求时生成的表单数据,不是固定的,所以自己生成还需要自己去找。
data = {
    "from": "zh",
    "to": "en",
    "query": "大家好",
    "transtype": "realtime",
    "simple_means_flag": "3",
    "sign": "自己浏览器生成的,自己找到替换此文本",
    "token": "自己浏览器生成的,自己找到替换此文本",
    "domain": "common"
}

response = requests.post(url, headers=headers, json=data)
print(json.loads(response.text))

这里的Post(),用法跟Get()差不多,只是需要携带需要上传的参数data就行。

总结

上面基本的说的很粗糙,后续有时间我再改改,就是笔记记下来,让自己复习的时候,能偶尔看下,mark下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值