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

python爬虫的url如何选择



库用于操作网页,并对网页的内容进行抓取处理。

包 包含以下几个模块:

需要用的就是每个模块的内置方法和函数。大概方法如下图:

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

可以模拟浏览器的一个请求发起过程。

这里主要介绍两个常用方法,和。

函数

语法格式如下:

示例:

运行结果

对象是类型,主要包含、、、、等方法,以及、、、、、等属性。

常用方法:

Request 类

我们抓取网页一般需要对(网页头信息)进行模拟,否则网页很容易判定程序为爬虫,从而禁止访问。这时候需要使用到类:

示例:

模块为所引发的异常定义了异常类,基础异常类是。

包含了两个方法,和。

是的一个子类,用于处理程序在遇到问题时会引发此异常(或其派生的异常),包含的属性为引发异常的原因。

是的一个子类,用于处理特殊错误例如作为认证请求的时候,包含的属性为的状态码,为引发异常的原因,为导致的特定请求的响应头。

区别:

关系:

示例

返回结果

此错误的原因。它可以是一个消息字符串或另一个异常实例。

HTTPError示例

output

和混合使用

注意:由于是的子类,所以捕获的时候要放在的上面。

示例:

如果不用上面的方法,可以直接用判断的形式

output

模块定义的函数可分为两个主要门类:解析和转码。

urlparse()

用于解析,格式如下:

为字符串的地址,为协议类型。

参数为,则无法识别片段标识符。相反,它们被解析为路径,参数或查询组件的一部分,并在返回值中设置为空字符串。

标准链接格式为:

对象中包含了六个元素,分别为:协议(scheme)、域名(netloc)、路径(path)、路径参数(params)、查询参数(query)、片段(fragment)。

示例:

output

以上还可以通过索引获取,如通过

urlunparse()

可以实现的构造。(构造)

接收一个是一个长度为6的可迭代对象,将的多个部分组合为一个。若可迭代对象长度不等于6,则抛出异常。

示例:

output

urlsplit()

函数也能对 进行拆分,所不同的是,并不会把 路径参数(params) 从 路径(path) 中分离出来。

当中路径部分包含多个参数时,使用解析是有问题的,这时可以使用来解析.

与类似,(构造),传入对象必须是可迭代对象,且长度必须是5。

示例:

output

urljoin()

同样可以构造。

传递一个基础链接,根据基础链接可以将某一个不完整的链接拼接为一个完整链接.

注:连接两个参数的, 将第二个参数中缺的部分用第一个参数的补齐,如果第二个有完整的路径,则以第二个为主。

URL 转码

中提供模块用来编码和解码,分别是与。

编码quote(string)

转码函数的功能是接收程序数据并通过对特殊字符进行转码并正确编码非文本来将其转为可以安全地用作组成部分的形式。它们还支持逆转此操作以便从作为组成部分的内容中重建原始数据,如果上述的解析函数还未覆盖此功能的话

语法:

使用转义符替换中的特殊字符。字母、数字和 '_.-~' 等字符一定不会被转码。在默认情况下,此函数只对的路径部分进行转码。可选的形参额外指定不应被转码的字符 --- 其默认值为 '/'。

可以是或对象。

示例:

执行结果:

编码urlencode()

只能对字符串编码,而可以对查询字符串进行编码。

output

解码 unquote(string)

解码就是对编码后的进行还原。

示例:

执行结果:

(在网络爬虫中基本不会用到,使用较少,仅作了解)

用于解析文件。

(统一小写)是一种存放于网站根目录下的协议,它通常用于告诉搜索引擎对网站的抓取规则。

协议也称作爬虫协议,机器人协议,网络爬虫排除协议,用来告诉爬虫哪些页面是可以爬取的,哪些页面是不可爬取的。它通常是一个的文本文件,一般放在网站的根目录上。

当爬虫访问一个站点的时候,会首先检查这个站点目录是否存在文件,如果存在,搜索爬虫会根据其中定义的爬取范围进行爬取。如果没有找到这个文件,搜索爬虫会访问所有可直接访问的页面。

提供了类,语法如下:

这个类提供了一些可以读取、解析文件的方法:

版权声明


相关文章:

  • rbf神经网络和bp神经网络2024-11-27 10:01:00
  • linux wait waitpid2024-11-27 10:01:00
  • rabbitmq和rocketmq哪个用的多2024-11-27 10:01:00
  • 霍夫曼编码树例题2024-11-27 10:01:00
  • sighup信号2024-11-27 10:01:00
  • keycode是哪个键2024-11-27 10:01:00
  • c语言指针指向数组写法2024-11-27 10:01:00
  • hikaricp(HikariCP简介)2024-11-27 10:01:00
  • cjson.dll2024-11-27 10:01:00
  • js注释有什么作用2024-11-27 10:01:00