下班了,学一点Python爬虫吧 第9天基本库urllib使用(解析链接3+分析Robots协议)

297 阅读2分钟

这是我参与2022首次更文挑战的第17天,活动详情查看:2022首次更文挑战

还是要坚持嘛,强逼着自己写的文章是很水,但是你也收获了,不是吗

坚持就是胜利,我很感激掘金这个更文活动,真的,要不是有激励,我可能下班连半个小时的书都不会看,强逼着自己写文章,反而保持了看书,敲敲代码的习惯 详细代码ref:code

习惯的养成,打架都说是21天,现在我还差四天就能养成这个好习惯了,先多看多谢,然后再把质量弄上去,感激掘金.

quote

这个方法可以将内容转化为URL编码的格式,当URL中有中文编码的格式时,有可能会有乱码问题,此时用quote这个方法可以将中文字符转化为URL编码:

from urllib.parse import quote

keyword = "我爱你"
url = "https://www.baidu.com/s?wd="+quote(keyword)

print(url)

得到的结果: https://www.baidu.com/s?wd=%E6%88%91%E7%88%B1%E4%BD%A0 你可能会问,为什么我的参数要这么写,如果你问出来这个问题,那么只能说明你在搜索的时候并没有仔细观察搜索参数的写法,可以先去百度上搜索一下,就可以看到它的构造就是这样子吧构造的.

unquote

有正就有反, 一个是编码那另一个就是得解码 将原来的代码照抄,然后添加这一句: print(unquote(url))

得到的结果:

截屏2022-01-31 下午8.18.41.png

分析Roborts协议

Robots协议,也叫做爬虫协议,机器人协议: 用来告诉爬虫那些可以爬,那些不可以爬,它通常是一个叫做robots.txt的文本文件 robots.txt 文本举例:

//我图省事,直接粘贴的掘金的robots.txt文件
User-agent: *

Disallow: /subscribe/subscribed
Disallow: /user/settings
Disallow: /drafts
Disallow: /news-drafts
Disallow: /editor
Disallow: /oauth-result
Disallow: /search
Disallow: /equation
Disallow: /book/order
Disallow: /books/payment
Disallow: /appview
Disallow: /creator
Disallow: /notification
Disallow: /translate
Disallow: /zhuanlan

Sitemap: https://juejin.cn/sitemap/index.xml

可以看到,基本上都是不允许,

robotsparser

在了解了爬虫协议之后,就可以使用robotsparser来解析robots.txt文件了,

直接上例子吧:

from urllib.robotparser import RobotFileParser
import ssl


ssl._create_default_https_context = ssl._create_unverified_context
rp = RobotFileParser()

rp.set_url("https://baidu.com/robots.txt")
rp.read()
print(rp.can_fetch("Baiduspider",'https://baidu.com'))

好的 到此为止,这个urllib这个库的方法,基本上常用的就学完啦,继续努力,持续进步