Python爬虫总结,适合懒人快速入门上手,每日更新内容

本文介绍了爬虫的基本流程,包括浏览器请求、响应状态和网页结构。重点讲解了Python中的socket库用于建立TCP和UDP连接,以及urllib3和requests库在处理HTTP请求时的应用,包括设置超时和重试机制。此外,还展示了如何使用requests库进行GET请求并获取响应内容。
摘要由CSDN通过智能技术生成

首先介绍一下爬虫的基本流程(学习爬虫差不多类似于套模板,所以流程要记住

浏览器提交请求 --->  爬取网页代码 --->  解析代码  ---> 储存解析内容


浏览器请求

a.发起请求

使用常用requests库

import requests

request包含:请求头和请求体,缺陷就是不能执行js和css代码

b.响应状态

200:代表成功

301:代表跳转

404:文件不存在

403:无权限访问

502:服务器错误

c.网页结构

<html>      //包含的是网页结构

        <head>        //包含的是头部内容以及js和css的内嵌样式

                <meta charset="utf-8">

                <title></titile>        //包含的是标题

        </head>

        <boby>

        //包含的是大部分具体内容,比如说盒子表单装的内容

        </boby>

</html>


正式开始实操


首先介绍socket库使用


建立客户端TCP连接

import socket        #导入库

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)        #建立TCP连接

s.connet('ip地址',端口)         #连接服务器

print(s.rev(1024).decode('utf-8'))        #查看是否成功连接

for data in [b'tom',b'jerry']:

        s.send(data)

        print(s.rev(1024).decode('utf-8'))            #发送数据并返回结果

s.send(b'exit')

s.close()                #发送退出信息断开连接

建立客户端UDP连接

import socket        #导入库

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)        #建立TCP连接

for data in [b'tom',b'jerry']:

        s.sendto(data,('ip地址',端口))

        print(s.rev(1024).decode('utf-8'))

s.close()            #返回结果


介绍urllib3,rquests库使用


import urllib3               #老规矩使用什么导入什么

http = urllib3.PoolManager()        #创建PoolManager()实例

rq = http.request('GET','ip地址或者绝对地址')        #通过rquest函数创建请求,使用get方法

print('查看响应码:',rq.status)

print('查看响应实体:',rq.data)


timeout设置

作用:为了防止网络、服务器不稳定造成连接时的丢包,其设置有三种方法


方法1:直接在url参数之后添加统一的timeout参数

url='ip地址或者绝对地址'

rq=http.request('GET',url,timeout=3.0)

方法2:分别设置连接与读取timeout参数

rq=http.rquest('GET',url,timeout=urllib3.Timeout(connect=1.0,read=3.0))

方法3:在poolmanager实例中设置

http = urllib3.PoolManager(timeout=4.0)

rq=http.rquest('GET',url,timeout=urllib3.Timeout(connect=1.0,read=3.0))


生成完成的http请求

1.urllib3实现         2.requests实现


1.urllib3实现

http = urllib3.PoolManager()        #创建实例

url = '网址'        #请求目标

ua = {'User-Agent'}        #这个打开网页f12查看复制,自己打容易错

tm = urllib3.Timeout(connect = 1.0 ,read = 3.0)         #设置超时时间

rq = http.request('GET',url,headers=ua,timeout=tm,retries=5,redirect=4)        #retries设置重试次数

print('服务器响应码:',rq.status)

print('获取内容:',rq.data.decode('utf-8'))

2.requests实现

import rquests

url = '网址'

rqg = requests.get(url)

print('结果类型:',type(rqg))

print('状态码:',rqg.status_code)

print('编码:',rqg.encoding)

print('响应头:',rqg.headers)

print('网页内容:',rqg.text)


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苏.辞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值