您的位置:首页 > 娱乐 > 明星 > 官方网站娱乐游戏城_永久免费的网页游戏_代发新闻稿最大平台_如何进行app推广

官方网站娱乐游戏城_永久免费的网页游戏_代发新闻稿最大平台_如何进行app推广

2025/8/2 7:40:10 来源:https://blog.csdn.net/2301_81711570/article/details/145646034  浏览:    关键词:官方网站娱乐游戏城_永久免费的网页游戏_代发新闻稿最大平台_如何进行app推广
官方网站娱乐游戏城_永久免费的网页游戏_代发新闻稿最大平台_如何进行app推广

一、异常处理

关于某些情况下,可能会出现异常,如果不处理它们,会发生很多错误。

而urllib库提供了error模块来处理这些异常,该模块包括以下功能:

(1)URLError

该类含有一个属性reason,可以返回错误原因

示例:

from urllib import error,request
try:a=request.urlopen("某个不存在的页面")
except error.URLError as b:print(b.reason)

系统输出:

Not Found

程序未报错,而是直接输出了错误的原因

(2)HTTPError

该类含有三个属性:code(状态码)、reason(错误原因)、headers(请求头)

示例:

from urllib import error,request
try:a=request.urlopen("某个不存在的页面")
except error.HTTPError as b:print(b.code,b.reason,b.headers)

如此,会输出响应的状态码、错误原因、请求头

(注:如果以上两个的网址要找某个存在网址的不存在页面才能输出)

二、网址处理

这里采用urllib库中的parse模块,

包括功能:

(1)urlparse

用于识别和分段url

来看一个例子:

它将一个网址分为了若干部分(注:空为没有)

netloc表示域名、path是访问路径、params是参数、query是查询条件、fragment是锚点(定位页面下拉位置)

当然,以上只是urlparse的一个参数

它的完整形态是:

urlparse(网址,scheme,allow_fragments)

网址就是上面所说的一堆,

scheme则是协议,http还是https

allow_fragments是是否忽略锚点

(2)urlunparse

用于构造url

(注:参数必须包含网址、netloc域名、path访问路径、params参数、query查询条件、fragment锚点这六部分)

示例:


与这两个类似的还有urlsplit、urlunsplit和urljoin,大家可以自行了解。


(3)urlencode

用于构造GET请求参数

举个例子:

首先构建一个字典,存储参数。

然后使用urlencode方法将其转化为真正的参数

就可以看到该参数成功进入了网址中

当然,有字典转化为参数,就有参数转化为字典,这里就可以用parse_qs

(4)quote

将内容转化为URL编码格式

有编码就有解码,解码可以采用unquote方法

三、Robots协议

这个协议通常用来区分,哪些网站可以爬,哪些网站不可以爬。

它通常是一个名为robots.txt的文本文件

在爬虫时,如果访问到存在该文件,就会根据其中规定的范围内爬取

如果没有,则全页面可爬。

(1)样例

User-agent: *

Disallow: /

Allow: /public/

如上便是一个简单样例,

  • public一行表示限定了搜索爬虫只能爬取public目录
  • 其中的 * 一行表示对所有爬虫都有效(如果将 * 改为Baiduspider 则表示只对百度爬虫有效)
  • Disallow则指明了不允许爬取的目录

附:常见爬虫名称及对应网站

  1. Baiduspider
    对应网站:百度(baidu.com)
    说明:Baiduspider 是百度搜索引擎使用的爬虫,用于抓取网站内容并将其索引。

  2. Googlebot
    对应网站:谷歌(google.com)
    说明:Googlebot 是 Google 搜索引擎的爬虫,负责抓取和索引全球范围内的网页内容。

  3. Bingbot
    对应网站:必应(bing.com)
    说明:Bingbot 是微软必应搜索引擎的爬虫,用于抓取和索引互联网上的网页。

  4. Yandexbot
    对应网站:Yandex(yandex.com)
    说明:Yandexbot 是俄罗斯搜索引擎 Yandex 使用的爬虫。

  5. Sogou Spider
    对应网站:搜狗(sogou.com)
    说明:搜狗爬虫用于抓取互联网上的信息,用于搜狗搜索引擎。

  6. 360Spider
    对应网站:360搜索(so.com)
    说明:360Spider 是360搜索引擎的爬虫,负责抓取网站数据。

  7. Yahoo! Slurp
    对应网站:Yahoo(yahoo.com)
    说明:Yahoo! Slurp 是 Yahoo 搜索引擎的爬虫,用于抓取和索引网页。

  8. DuckDuckBot
    对应网站:DuckDuckGo(duckduckgo.com)
    说明:DuckDuckBot 是 DuckDuckGo 搜索引擎使用的爬虫,旨在获取网页内容进行索引。

  9. SeznamBot
    对应网站:Seznam(seznam.cz)
    说明:SeznamBot 是捷克搜索引擎 Seznam 的爬虫,负责抓取网页内容。


(2)使用robotparser

依旧是urllib库里的模块。

常用方法有:

  1. RobotFileParser()

    • 功能:创建一个 RobotFileParser 对象。
  2. set_url(url)

    • 功能:设置 robots.txt 文件的 URL 地址,通常是网站根目录下的 robots.txt
  3. read()

    • 功能:读取并解析指定 URL 的 robots.txt 文件内容。
  4. can_fetch(useragent, url)

    • 功能:判断给定的爬虫用户代理(user-agent)是否可以抓取指定 URL。如果 robots.txt 文件允许抓取该页面,则返回 True,否则返回 False
  5. mtime()

    • 功能:获取 robots.txt 文件的修改时间(如果存在的话)。返回值为时间戳。
  6. modified()

    • 功能:检查 robots.txt 文件是否已被修改。如果文件已经被修改,则返回 True,否则返回 False
  7. default_entry

    • 功能:设置默认条目。如果没有明确的规则匹配某个 user-agent,使用此默认条目进行判断。

举个代码示例来看一下:

from urllib import robotparser
#创建一个对象
a=robotparser.RobotFileParser()#设置网址地址
a.set_url(robots.txt文件的链接)#读取
a.read()#判断
print(a.can_fetch('爬虫名称(如Baiduspider)' ,'要爬取的url'))

然后运行,返回看返回的是True还是False即可判断是否限制爬取。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com