当前位置: 首页 > news >正文

杭州定制网站建设金融公司网站建设模板下载

杭州定制网站建设,金融公司网站建设模板下载,住房新建网站,网站怎样注册备案目录 一、urllib 1.1 初体验 1.2 使用urllib下载网页、图片、视频等 1.3 反爬介绍 1.4 请求对象定制 1.5 get请求的quote方法 1.6 多个参数转成ascii编码 1.7 post请求 1.8 综合案例演示 一、urllib 1.1 初体验 # urllib是python默认带的,无需额外下载 i…

目录

一、urllib

1.1 初体验

1.2 使用urllib下载网页、图片、视频等 

 1.3 反爬介绍

1.4 请求对象定制

1.5 get请求的quote方法

1.6 多个参数转成ascii编码

1.7 post请求

1.8 综合案例演示


一、urllib

1.1 初体验

# urllib是python默认带的,无需额外下载
import urllib.requesturl = 'http://www.baidu.com'response = urllib.request.urlopen(url)# print(type(response))
# <class 'http.client.HTTPResponse'># 读取n个字节
# content = response.read(5)
# 读取一行
# content = response.readline()
# 读取全部行
# content = response.readlines()# 读取全部并解析为utf-8字符集
content = response.read().decode('utf-8')
print(content)
# 返回url地址
print(response.geturl())
# 获取请求头
print(response.getheaders())

1.2 使用urllib下载网页、图片、视频等 

import urllib.request# 下载网页
url_page = 'https://blog.csdn.net/YuanFudao/article/details/139655676'
# def urlretrieve(url, filename=None, reporthook=None, data=None):
urllib.request.urlretrieve(url_page, '自己的文章.html')

import urllib.request# 下载网页
url_page = 'https://blog.csdn.net/YuanFudao/article/details/139655676'
# def urlretrieve(url, filename=None, reporthook=None, data=None):
#
urllib.request.urlretrieve(url_page, '自己的文章.html')# 下载图片
url_img = 'https://img2.baidu.com/it/u=3317400103,1801697482&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=498'
urllib.request.urlretrieve(url=url_img, filename='人物.jpg')

import urllib.request# 下载网页
url_page = 'https://blog.csdn.net/YuanFudao/article/details/139655676'
# def urlretrieve(url, filename=None, reporthook=None, data=None):
#
urllib.request.urlretrieve(url_page, '自己的文章.html')# 下载图片
url_img = 'https://img2.baidu.com/it/u=3317400103,1801697482&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=498'
urllib.request.urlretrieve(url=url_img, filename='人物.jpg')# 下载视频
url_video = 'https://vdept3.bdstatic.com/mda-ph856bw9kuvxfq8n/360p/h264/1691552893804719248/mda-ph856bw9kuvxfq8n.mp4?v_from_s=hkapp-haokan-nanjing&auth_key=1718881046-0-0-42919dd1325bf8705f23299eec6f8cba&bcevod_channel=searchbox_feed&pd=1&cr=0&cd=0&pt=3&logid=3446619467&vid=3701907759041297688&klogid=3446619467&abtest='
urllib.request.urlretrieve(url_video, '好看视频.mp4')

 1.3 反爬介绍

一些网站,我们没法直接这样获取到资源,大概率是这些网站做了反爬手段,例如上述下载视频,如果是b站视频,直接这样是下载不到的。

再举个例子:

import urllib.requesturl = 'https://www.baidu.com'response = urllib.request.urlopen(url)
content = response.read().decode('utf-8')
print(content)

我们发现访问https的百度和访问http协议的百度,我们返回的结果是不一样的。https://www.baidu.com的结果明显少了很多内容。这其实就是因为反爬的原因。 为什么返回的结果很少?是因为我们提供的数据不完整。那么如何做到无差别浏览器呢?我们慢慢来~

1.4 请求对象定制

UA介绍

User Agent 中文名为用户代理,简称UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU类型、浏览器及版本。浏览器内核、浏览器渲染引擎、浏览器语言等。

import urllib.requesturl = 'https://www.baidu.com'
# f12打开百度的network控制台,查看请求头里面携带的user-agent内容,复制过来进行伪造
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36'
}
# 请求对象定制
# 因为urlopen中不能传入字典,不能直接传入headers
request = urllib.request.Request(url=url, headers=headers)
response = urllib.request.urlopen(request)
content = response.read().decode('utf-8')
print(content)

ok,现在可以正常访问了。

这是我们遇到的第一个反爬,ua反爬! 

1.5 get请求的quote方法

案例演示

我们模拟百度搜索周杰伦

import urllib.requesturl = 'https://www.baidu.com/s?wd=周杰伦'headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36'
}requests = urllib.request.Request(url=url, headers=headers)response = urllib.request.urlopen(requests)content = response.read().decode('utf-8')print(content)

运行报错:

 默认情况下只检索ascii码,因此需要把‘周杰伦’转换成Unicode编码,怎么转呢?

使用quote方法!

import urllib.request
# 需要提前引入
import urllib.parseparam ='周杰伦'
param = urllib.parse.quote(param)
url = 'https://www.baidu.com/s?wd=' + paramheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36'
}requests = urllib.request.Request(url=url, headers=headers)response = urllib.request.urlopen(requests)content = response.read().decode('utf-8')print(content)

此时就不在报错了,但是弹出的页面是安全验证,这又是百度的一个反爬手段!我们后续再说

1.6 多个参数转成ascii编码

当然了,我们可以把参数&参数整体作为一个参数通过quote方法转。

不过不建议,这里推荐使用urlencode方法!

import urllib.parsedata = {'wd': '周杰伦','sex': '男'
}a = urllib.parse.urlencode(data)print(a)

 ok,我们再测试一下

import urllib.parse
import urllib.request
data = {'wd': '周杰伦','sex': '男'
}a = urllib.parse.urlencode(data)headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36'
}url = 'https://www.baidu.com/s?' + arequests = urllib.request.Request(url=url, headers=headers)response = urllib.request.urlopen(requests)content = response.read().decode('utf-8')print(content)

还是遇到了这个安全验证的反爬,说明可能服务器不知道我是谁,那么试试把cookie带上呢。这个留到下面再去实现吧~

1.7 post请求

post请求传参通常不应该也不推荐拼接再url请求路径后,而是放在请求体中。

下面以百度翻译为例,介绍post请求爬虫翻译。

import json
import urllib.request
import urllib.parseurl = 'https://fanyi.baidu.com/sug'headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36'
}# 参数
data = {'kw': '玫瑰'
}
data = urllib.parse.urlencode(data).encode('utf-8')# 检查参数拼接是否正确
# print(data)request = urllib.request.Request(url=url, data=data, headers=headers)response = urllib.request.urlopen(request)content = response.read().decode('utf-8')# {"errno":0,"data":[{"k":"\u73ab\u7470","v":"rose; [\u690d] rugosa rose; rosa rugosa; hep"},{"k":"\u73ab\u7470\u56ed","v":"rosary; rosarium; [\u7535\u5f71]Roseland"},{"k":"\u73ab\u7470\u6728","v":"rose wood"},{"k":"\u73ab\u7470\u679c","v":"fructus rosae"},{"k":"\u73ab\u7470\u6c34","v":"[\u533b] aquae rosae; rose water"}],"logid":65895191}
# print(content)# 字符串 -> json对象
obj = json.loads(content)
# {'errno': 0, 'data': [{'k': '玫瑰', 'v': 'rose; [植] rugosa rose; rosa rugosa; hep'}, {'k': '玫瑰园', 'v': 'rosary; rosarium; [电影]Roseland'}, {'k': '玫瑰木', 'v': 'rose wood'}, {'k': '玫瑰果', 'v': 'fructus rosae'}, {'k': '玫瑰水', 'v': '[医] aquae rosae; rose water'}], 'logid': 148055707}
print(obj)

1.8 综合案例演示

// todo 🫢

http://www.yayakq.cn/news/872187/

相关文章:

  • 做网站买域名要多少钱东莞优化哪家好
  • 百度知道提问网站未备案做seo会被k吗
  • 网站开发资质wordpress 侧导航栏
  • 高端制作网站公司公司注册代理注册
  • 太仓网站开发公司wordpress主题应该怎么添加
  • 凡科做网站行吗网页制作网站受众群体分析
  • 客户网站建设完成后需要什么东莞模板建网站平台
  • 建一个网站大约多少钱沈阳养老保险网站
  • 建设网站上申请劳务资质吗南昌优化排名推广
  • 做学校网站素材图片素材网站本科
  • 网站备案填了虚假座机能过吗四川住房和城乡建设厅网站不能进入
  • 企业内部网站制作站长工具seo综合查询隐私查询
  • 上线公司 企业网站有没有什么做地堆的网站
  • 在线logo设计网站国外的有名的网站
  • 怎样换网站logo建设部网站阮建昌公示
  • 做机械设备内销网站有哪些无锡做食品网站的公司简介
  • 查询网138网站域名网站模板分什么类型
  • 公司网站设计很好的国外家谱网站的建设
  • 教育技术专业网站开发课程黑色网站配色
  • 网站制作的原因国内最大网站制作公司
  • 上海网站建设公司怎么样网站建设合作范本
  • 建设一个微商的网站株洲网站制作公司有哪些
  • dede网站栏目管理在iis里面创建网站
  • 装修网站官网wordpress中
  • 萧山区建设局网站济南网络推广网络营销软件
  • 网站开发的缺点为什么要先创建站点后建立文件?能否改变两者的顺序?
  • 网站开发设计体会海南网站建设小强
  • 深圳华南城网站建设做ppt的模板的网站
  • 电子商务网站最新的跨境电商平台有哪些
  • 企业网站开发环境重庆网站建设设计公司信息