当前位置:网站首页 > 技术博客 > 正文

urllib python3





想要进行python爬虫首先我们需要先将网页上面的信息给获取下来,这就是utllib库的作用


 
     
  • urllib 包 包含以下几个模块:
    • urllib.request - 打开和读取 URL。
    • urllib.error - 包含 urllib.request 抛出的异常。
    • urllib.parse - 解析 URL。
    • urllib.robotparser - 解析 robots.txt 文件
  • python爬虫主要用到的urllib库中的request和parse模块

下面我们来详细说明一下这两个常用模块的基本运用

urllib.request 定义了一些打开 URL 的函数和类,包含授权验证、重定向、浏览器 cookies等。

语法如下:

  • urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
    • url:url 地址。
    • data:发送到服务器的其他数据对象,默认为 None。
    • timeout:设置访问超时时间。
    • cafile 和 capath:cafile 为 CA 证书, capath 为 CA 证书的路径,使用 HTTPS 需要用到。
    • cadefault:已经被弃用。
    • context:ssl.SSLContext类型,用来指定 SSL 设置。
 
     

在这里插入图片描述

将其打印的内容写到一个html文件中,打开和百度一毛一样

 
     

在这里插入图片描述

有时我们爬虫需要模拟浏览器进行用户登录等操作,这个时候我们就需要进行post请求

但是post必须有一个获取请求之后的响应,也就是我们需要有一个服务器。给大家介绍一个免费的服务器网址,就是用来测试用的http://httpbin.org/。主要用来测试http和https的
在这里插入图片描述
在这里插入图片描述
我们可以尝试执行一下,去获取对应的响应。
在这里插入图片描述
在这里插入图片描述
可以用Linux命令去发起请求,URL地址为http://httpbin.org/post。得到下方的响应。
在这里插入图片描述
我们也可以通过爬虫来实现







 
     

两个响应结果对比是不是一样几乎
在这里插入图片描述
在这里插入图片描述

相当于进行了一次模拟的post请求。这样有些需要登录的网站也是可以爬取的。

一般进行爬虫时,不可能一直等待响应。有时网络不好或者网页有反爬或者一些其他东西时。无法快速爬出。我们就可以进入下一个网页继续去爬。利用timeout属性就好

 
     
  • status:
    • 返回200,正确响应可以爬取
    • 报错404,没有找到网页
    • 报错418,老子知道你就是爬虫
  • getheaders():获取Response Headers在这里插入图片描述
    • 也可以通过gethead(“xx”) 获取xx对应的值,比如:上图 gethead(content-encoding) 为 gzip

首先打开任何一个网页按F12找到Response Headers,拉到最下面找到 User-Agent。将其复制保存下来,为反爬做准备。

在这里插入图片描述
在这里插入图片描述

下面我们进行尝试,直接爬取豆瓣,直接来个418,知道你是爬虫,我们来伪装一下
在这里插入图片描述
为什么418呢,因为如果是直接进行请求访问的话,发过去的User-Agent 是下面的,直接告诉浏览器我们是爬虫。我们需要伪装
在这里插入图片描述


 
     

当然反爬不可能如此简单,上面将讲的那个 post请求,也是十分常见的突破反爬的方式,不行就将整个Response Headers全部模仿。下面还有个例子作为参考。和上面的post访问的网址一样

  • 浏览器访问结果
    在这里插入图片描述
  • 爬虫访问结果
 
     

在这里插入图片描述


  • 上一篇: jvm调优工具
  • 下一篇: 窗口函数 partition by
  • 版权声明


    相关文章:

  • jvm调优工具2025-06-05 23:30:03
  • java中treenode2025-06-05 23:30:03
  • c++ fstream read2025-06-05 23:30:03
  • python 异步 asyncio2025-06-05 23:30:03
  • hs数据库工具2025-06-05 23:30:03
  • 窗口函数 partition by2025-06-05 23:30:03
  • combobox的使用2025-06-05 23:30:03
  • vue3难还是vue2难2025-06-05 23:30:03
  • hsqldb h22025-06-05 23:30:03
  • 运算符重载函数的两种处理方式2025-06-05 23:30:03