【Python爬虫】urllib模块,User-agent

2023-11-15

通过 rullib模块 爬取html内容

(1)urllib模块分类


# urllib.request:请求模块,用于打开和读取 URL;
# urllib.error:异常处理模块,捕获 urllib.error 抛出异常;
# urllib.parse:URL 解析,爬虫程序中用于处理 URL 地址;
# urllib.robotparser:解析 robots.txt 文件,判断目标站点哪些内容可爬,哪些不可以爬,但是用的很少。

(2)方法使用案例

主要方法:
urlopen(),
<1> 普通编码方式:


#目的:抓取您想要的网页,并将其保存至本地计算机
#步骤:

from urllib import request,parse

# 拼接 url 地址
url = 'http://www.baidu.com/s?wd={}'
want = input("请输入搜索内容:")
params = parse.quote(want)	#quote()实现url编码
full_url = url.format(params)

# 发送请求
#1 重构请求头
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.9200'}
#2 创建请求对象
req = request.Request(url = full_url, headers = headers)
#3 响应对象
res = request.urlopen(req)
#4 获取响应对象内容
html = res.read().decode('utf-8')  #read()出的是字节,需要转字符

# 将照片保存至本地
filename = want + '.html'
with open(filename, 'w', encoding='utf-8') as f:
    f.write(html)

<2> 函数式编程方式

from urllib import request
from urllib import parse

# 拼接URL地址
def get_url(word):
  url = 'http://www.baidu.com/s?{}'
  #此处使用urlencode()进行编码
  params = parse.urlencode({'wd':word})
  url = url.format(params)
  return url

发请求,保存本地文件
def request_url(url,filename):
  headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0'}
  # 请求对象 + 响应对象 + 提取内容
  req = request.Request(url=url,headers=headers)
  res = request.urlopen(req)
  html = res.read().decode('utf-8')
  # 保存文件至本地
  with open(filename,'w',encoding='utf-8') as f:
    f.write(html)

# 主程序入口
if __name__ == '__main__':
  word = input('请输入搜索内容:')
  url = get_url(word)
  filename = word + '.html'
  request_url(url,filename)

(3)重构User-Agent

  • 为解决网站通过识别 User-Agent 来封杀爬虫程序的问题。需要手工设置user-agent。
    (2)中展示了手动设置User-Agent。

常用浏览器的User-Agent,参考网站http://tools.jb51.net/table/useragent

查看本机浏览器的User-Agent,参考网站:UserAgent查看在线工具



--------------------------------------代理的实现方案---------------------------------------------------------
1)User-Agent 代理池:
在python使用import此模块列表。
使用,可利用random.random(ua_list)随机选取

ua_list = [
    'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon 2.0',
    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11',
    'User-Agent:Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11',
    'Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1',
    'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)',
    'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50',
    'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0',
    ' Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1',
    'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1',
    ' Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1',
]

2)使用第三方 免费/付费 代理

3)在操作系统 / 程序 / 浏览器 等软件切换


> 文章参考C语言中文网,https://zhuanlan.zhihu.com/p/526574877。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Python爬虫】urllib模块,User-agent 的相关文章

随机推荐

  • osgEarth的Rex引擎原理分析(三十六)为什么要删除设置过的垂直水准面

    目标 二十九 中的问题86 椭球体 水平面 应该不是删除 而是信息创建出一个没有垂直水准面的Profile 待继续分析列表 9 earth文件中都有哪些options 九 中问题 10 如何根据earth文件options创建不同的地理信息
  • java gc 次数_浅谈如何减少GC的次数

    GC会stop the world 会暂停程序的执行 带来延迟的代价 所以在开发中 我们不希望GC的次数过多 本文将讨论如何在开发中改善各种细节 从而减少GC的次数 1 对象不用时最好显式置为 Null 一般而言 为 Null 的对象都会被
  • 应用程序无法正常启动0xc000007b请点击确定关闭应用程序

    应用程序无法正常启动0xc000007b怎么办 这是很多用户在电脑的使用过程中会出现的一个问题 究竟出现这个问题的时候 我们要怎么去解决它 让我们的电脑重新恢复正常使用呢 想要解决这个问题就一起来看看0xc000007b错误解决办法吧 0x
  • nRF52832学习记录(一、外设初识之 GPIOTE)

    添加GPIO和GPIOTE寄存器表 对于应用的理解对着寄存器查看会比较明了 这个不管是在哪款芯片上都是如此 2021 9 27 这些年蓝牙5 0的应用越来越多 最近也是想着把以前Enocean的低功耗设备有过的产品 用蓝牙做一套匹配的版本
  • pikachu靶场的两道RCE

    第一道题 ping一个ip并查看当前目录 输入127 0 0 1 点击ping 出来一堆乱码 第一种方法 按win r键 输入regedit 点击确定 即打开注册表编辑器 打开HKEY CURRENT USER项 打开其中的Console项
  • 浅谈Python网络爬虫应对反爬虫的技术对抗

    在当今信息时代 数据是非常宝贵的资源 而作为一名专业的 Python 网络爬虫程序猿 在进行网页数据采集时经常会遭遇到各种针对爬虫行为的阻碍和限制 这就需要我们掌握一些应对反爬机制的技术手段 本文将从不同层面介绍如何使用 Python 进行
  • 概率论与数理统计学习笔记——第三十讲——方差定义和计算公式

    1 方差概念的引入 2 方差 标准差 均方差 的定义及计算公式 3 0 1分布的方差 4 泊松分布的方差 5 均匀分布的方差 6 指数分布的方差 7 方差的应用实例 投资方案评估
  • Kubernetes Configmap + Secret

    Secret是什么 在Kubernetes中 Secret是一种用于存储敏感信息的资源对象 它主要用于保存密码 API令牌 密钥和其他敏感数据 以供容器 Pod或集群中的其他资源使用 Secret有以下特点 安全存储 Secret对象被用于
  • Eclipse 搭建一个servlet小程序

    跳转 http www importnew com 14621 html Servlet 是一些遵从Java Servlet API的Java类 这些Java类可以响应请求 尽管Servlet可以响应任意类型的请求 但是它们使用最广泛的是响
  • C++中break与continue的用法

    根据break的用法 是在循环体内 强行结束循环的执行 也就是结束整个循环的过程 不再执行循环的条件是否成立 直接转向循环语句下面的语句 continue的作用 在循环语句中 跳出本次循环中余下尚未执行的语句 继续执行下一次循环 其包括两点
  • sqli-labs 1——20关攻略

    1 10 GET传输 Less 1联合查询 优点 查询方便 速度很快 缺点 必须要有显示位 1 判断sql语句中一共返回了多少列 order by 3 对比如下两张图的显示页面 得知有3列 2 查看显示位 union select 1 2
  • 你在用什么写用例

    这段时间用例评审项目组三个成员 有用excel的 有用xmind的 有用禅道的 而我关于用例用到xmind 后来用excel 后来用禅道一直到现在 xmind是思路分析和整理的工具 在最开始做测试的前3年可以说很依赖这款工具 后来 如果要做
  • QT的学习

    1 Test brower 文本浏览器 2 菜单栏窗体里面有预览功能 3 窗口的布局 4 信号与槽 其实就是时间处理函数 类的成员函数 2019 5 27 学习了 QFileDialog 类 就是选择文件 并且把文件名显示到line edi
  • 编写软件测试文档实验报告,黑盒测试软件测试实验报告.doc

    黑盒测试软件测试实验报告 doc 软件测试与质量课程实验报告 实验2 实验2 黑盒测试法实验 姓名院系 学号 任课教师 实验指导教师 实验地点 实验吋间 实验目的 系统地学习和理解黑盒测试的 本概念 原理 熟悉和掌握等价类划分法 边界值分析
  • bootstrap 动态添加js 页面渲染_给Shopify页面添加动态背景特效教程(傻瓜式操作模板)...

    第一种特效 多彩动态气泡向中心焦点聚合js动画 操作 复制代码如下代码 然后打开页面 切换到添加代码模式 然后复制到内容的最顶部 如下图所示
  • 【STM32技巧】使用STM32 HAL库的硬件I2C驱动RX8025T实时时钟芯片

    基础配置 使用单片机APM32F103RBT6 使用外设I2C1 PB7 SDA 使用外设I2C1 PB6 SCK STM32CUBEMX 版本5 6 配置如下 i2c c文件 File Name I2C c Description Thi
  • 目标检测中图片预处理之图片大小分析

    前言 很多做目标检测的新手 拿到数据集就迫不及待想找一个算法来跑它 内心先爽一把 包括我在内也是这样 其实样的做法不合理 我们应该先对数据集进行一些分析 找出数据集的特点 有针对性的进行检测 首先要关注的是图片大小 这个相当重要 假设测试文
  • 01Nginx源码分析之初探Nginx架构

    01Nginx源码分析之初探Nginx架构 注 接下来的源码分析我都是参考以下这位博主的 但是有些地方不对的我会修改 毕竟每个人理解不一样 并且版本为nginx stable 1 18 自娱自乐的代码人 1 初探Nginx架构 第一篇没什么
  • 深度学习之手写数字识别

    当我们开始学习编程的时候 第一件事往往是学习打印 Hello World 就好比编程入门有Hello World 机器学习入门有MNIST MNIST是一个入门级的计算机视觉数据集 它包含各种手写数字图片 它也包含每一张图片对应的标签 告诉
  • 【Python爬虫】urllib模块,User-agent

    通过 rullib模块 爬取html内容 文章目录 1 urllib模块分类 2 方法使用案例 3 重构User Agent 1 urllib模块分类 urllib request 请求模块 用于打开和读取 URL urllib error