首页 > 其他分享 >爬虫基础知识

爬虫基础知识

时间:2023-03-15 21:46:39浏览次数:45  
标签:get res 爬虫 基础知识 headers print requests data

目录
爬虫是什么?;爬虫就是程序--->从互联网中,各个网站上,爬取数据[前提是:你能浏览的页面才能爬],做数据清洗,保存到数据库的过程。

爬虫本质:模拟方式发送http请求、然后获取数据、再做数据清洗、最后保存到数据库

本篇爬虫知识主要包括(不会一次性写完,分好几篇文章写完):

  1. 模拟发送http请求(requests模块、selenium)
  2. 反扒(封IP:IP代理、封账号:cookie池)
  3. 解析数据(bs4)
  4. 入库(保存到MySQL、Redis等数据库以及普通文件)
  5. 爬虫框架(scrapy)

一、requests模块

使用python为什么能发送http请求,原因是该模块封装了Python内置模块urllib(起之前用到的urllib,requests模块的api更加便捷,本质就是封装了urllib3)

安装模块

pip install requests

基本使用

import requests


res = requests.get('网址')  # 获取数据发送get请求
print(res.text)  # text 参数可以打印出页面HTML代码

二、requests携带参数的方式

第一:直接在URL后面英文问号拼参数
 res = requests.get('网址')
    
第二:使用params参数(其实最后效果跟第一种方式一样)
res = requests.get('网址',params={'name':'mire','age':18})

三、get请求URL解码编码

import requests
from urllib.parse import quote, unquote

res = requests.get('网址', params={'name': '阿丽米热', 'age': 18})
print(res.url)  # https://www.cnblogs.com/almira998/p/17208674.html?name=%E9%98%BF%E4%B8%BD%E7%B1%B3%E7%83%AD&age=18

"""
我们平时在浏览器上搜关键字,有时候当前网址后面拼搜索关键字但是其已经url编码的具体样子如下
https://www.cnblogs.com/almira998/p/17208674.html?name=%E9%98%BF%E4%B8%BD%E7%B1%B3%E7%83%AD&age=18
怎么样?是不是很眼熟啊,这就是url编码后的效果
"""

'''
那么我们可以研究下如编码和解码
首先要导入模块  from urllib.parse import quote, unquote
quote:代表编码
unquote:代表解码
'''

# 演示一下编码和解码
res = quote('阿丽米热')
print(res)  # %E9%98%BF%E4%B8%BD%E7%B1%B3%E7%83%AD

res1 = unquote('%E9%98%BF%E4%B8%BD%E7%B1%B3%E7%83%AD')
print(res1)  # 阿丽米热

四、post请求携带数据编码格式

import requests

# data对应字典,这样写,编码方式是urlencoded
requests.post(url='xxxxxxxx',data={'xxx':'yyy'})
# json对应字典,这样写,编码方式是json格式
requests.post(url='xxxxxxxx',json={'xxx':'yyy'})
# 终极方案,编码就是json格式
requests.post(url='',
              data={'':1,},
              headers={
                  'content-type':'application/json'
              })

四、get请求携带请求头

# (反爬虫措施之一)
Connection: keep-alive  # 该参数的作用保持链接状态,因为http协议本质是基于TCP协议的(无连接、无状态)
Cookie: 很长的字符串删掉;  # 带着cookie就可以信任为登录状态,请求比较容易成功
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.3  # 表示客户端的类型 比如操作系统浏览器类型等等
import requests


# 先用字典的形式包装好
headers = {
    'Connection':'keep-alive',
    'Cookie':'一堆字符串',
    'User-Agent':''
}

res = requests.get('网址', headers=headers)  # headers=headers表明携带请求头
print(res.text)

五、post请求携带参数

# 发送post请求需要以下参数
"""
1、携带登录信息(用户名、密码、验证码)
2、携带cookie
3、携带请求头headers
"""
import requests 
data = {
    'username': '',
    'password': '',
    'captcha': '3456',
    'remember': 1,
    'ref': '网址',
    'act': 'act_login'
}

headers = {
    'Connection':'keep-alive',
    'Cookie':'一堆字符串',
    'User-Agent':''
}
res = requests.get('网址', data=data, headers=headers)
print(res.text)


"""
登录一般都是post请求,需要细带cookie
但是有些网站啊有双token认证 严重影响了爬虫的效率
使用requests.session就不用带cookie
"""
# 使用方法
session = requests.session()
res = session.post('网址', data=data)
res1 = session.get('网址')  # 自动保持登录状态,自动携带cookie

六、requests.session的使用(可以不用带cookie)

import requests


# 在data参数里需要携带用户名密码验证码等基本信息
data = {
    'username': '[email protected]',
    'password': 'almira10054X',
    'referer': '网址'
}
# 发post请求,参数里面传data参数

session = requests.session()
res = session.post('网址, data=data)

print(res.text)

七、response对象

# Response相应对象的属性和方法
import requests
headers = {
    'User-Agent': '一些pc和浏览器配置信息'
}
respone=requests.get('网址',headers=headers)
# respone属性
print(respone.text) # 响应体转成了字符串
print(respone.content) # 响应体的二进制内容

print(respone.status_code) # 响应状态码
print(respone.headers)   # 响应头
print(respone.cookies)  # cookie是在响应头,cookie很重要,它单独做成了一个属性
print(respone.cookies.get_dict()) # cookieJar对象---》转成字段
print(respone.cookies.items())  # cookie的键值对

print(respone.url)    # 请求地址
print(respone.history) # 不用关注

print(respone.encoding)  # 响应编码格式

八、爬取图片和视频(前提是没有做防盗链)

import requests

url = '网址'

res = requests.get(url)
with open('狗.jpg', 'wb') as f:
    for line in res.iter_content():
        f.write(line)

url = '网址'

res1 = requests.get(url)
with open('视频.mp4', 'wb') as f:
    for line in res1.iter_content():
        f.write(line)



标签:get,res,爬虫,基础知识,headers,print,requests,data
From: https://www.cnblogs.com/almira998/p/17220176.html

相关文章

  • Redis基础知识
    IO多路复用IO:I/O是Input输入/Output输出的简称,通常指数据在内部存储器(内存)和外部存储器(硬盘、优盘)或其他周边设备之间的输入和输出。  输入/输出是信息处理系统(计算机)......
  • 爬虫初识
    目录爬虫初识昨日回顾今日内容详细1爬虫介绍2request模块介绍3request发送get请求4request携带参数5url编码解码6携带请求头7发送post请求携带数据8自动登录携带......
  • 爬虫操作
    目录爬虫操作url网址中文编码解码发送请求携带请求头发送post请求给接口模拟自动登录Requests.sessionpost请求携带数据编码格式返回的response中有哪些数据编码问题爬虫下......
  • 爬虫
    今日内容1.爬虫介绍2.request模块介绍3.request发送get请求4.request携带参数5.url编码解码6.携带请求头7.发送post请求,携带数据8.自动登录,携带cookie的两种方式......
  • 【python爬虫】 request模块介绍 http协议版本区别 双token认证 携带cookie的两种方
    目录上节回顾今日内容1爬虫介绍2request模块介绍3request发送get请求4request携带参数5url编码解码6携带请求头http协议版本之间的区别7发送post请求,携带数据对于......
  • 爬虫简介
    1爬虫介绍#爬虫是什么 -爬虫就是程序---》从互联网中,各个网站上,爬取数据[你能浏览的页面才能爬],做数据清洗,入库#爬虫的本质 -模仿方式http请求,获取数据---》入......
  • 爬虫学习02之模拟登录以及代理
    一、调试模式介绍调试模式,即进入网页页面半代码模式,查看网页与代码一一对应关系。鼠标右键,再出现选项中找到检查进入调试模式,或者按键盘上的F12键进入调试模式。功能介......
  • 爬虫01
    目录1爬虫介绍2requests模块介绍3requests发送get请求4request携带参数5url编码解码6携带请求头7发送post请求,携带数据8自动登录,携带cookie的两种方式9requests.......
  • Docker基础知识 (28) - 在 Dockerfile 中以 scratch 为基础镜像 (FROM scratch)
     通常使用Docker镜像时会以一个已存在的镜像为基础,在其上进行定制,这个已存在的镜像就是基础镜像。在DockerFile中必须指定基础镜像,FROM指令就是用于指定基础镜像,......
  • 爬虫-requests
    1.爬虫介绍爬虫就是程序从互联网中各个网站上爬取数据(只能爬区我们能看到的数据),然后进行数据清洗(筛选),入库。爬虫的本质:模拟http请求,获取数据,入库。百度就是一个大......