文章插图
有拆分当然也会有拼接,我们可以看到上面返回的有六个值,所以我们在做拼接时一定要填写六个参数,否则它会报没有足够的值用来解包的错误 。
urllib.parse.urlunpars(url,scheme)
文章插图
文章插图
类似的拼接方法其实还有,比如说urljoin,例子如下:
文章插图
urllib.robotparser 它也是一个解析模块,从它的字面意思看,应该是一个机器人解析模块 。
而且它还与机器人协议有关联,它的存在就是为了解析每个网站中机器人协议,判断这个网站是否可以抓取 。
每个网站中都会有一个robots.txt文件,我们要做的就是先解析它,然后在对要下载的网页数据进行判断是否可以抓取 。
文章插图
可以通过直接输入url的方式来判断:
from urllib import robotparser
rb = robotparser.RobotFileParser('https://www.baidu.com/robots.txt')
print(rb.read)
url = 'https://www.baidu.com'
user_agent = 'BadCrawler'
aa=rb.can_fetch(user_agent, url) #确定指定的用户代理是否允许访问网页
print(aa) #禁止使用的用户代理 false
user_agent = 'googlebot'
bb=rb.can_fetch(user_agent, url)
print(bb)#允许使用的用户代理 true
也可以通过间接设置url的方式来判断:from urllib import robotparser
rb = robotparser.RobotFileParser
rb.set_url('https://www.baidu.com/robots.txt')
rb.read #读取
url = 'https://www.baidu.com'
user_agent = 'BadCrawler'
aa=rb.can_fetch(user_agent, url) #确定指定的用户代理是否允许访问网页
print(aa) #禁止使用的用户代理 false
user_agent = 'Googlebot'
bb=rb.can_fetch(user_agent, url)
print(bb)#允许使用的用户代理 true
print(rb.mtime) #返回抓取分析robots协议的时间
rb.modified #将当前时间设置为上次抓取和分析 robots.txt 的时间
print(rb.mtime)
# 返回 robots.txt 文件对请求速率限制的值
print(rb.request_rate('Googlebot'))
print(rb.request_rate('MSNBot'))
# 返回 robotx.txt 文件对抓取延迟限制的值
print(rb.crawl_delay('Googlebot'))
print(rb.crawl_delay('MSNBot'))
三、应用案例:爬取起点小说名老样子,按下键盘快捷键F12,进行网页分析,这次我们采用lxml,我们得知只需要将这个页面中的某一个部分的数据变动一下就可以抓取到所有数据 。如图:
文章插图
下次我们来讲lxml和xpath语法,以便于大家更好的爬取数据,urllib内容就这么多,并不复杂,requests更为简单易学 。
【Python自带爬虫库urllib使用大全】
推荐阅读
- JDK里面自带了这么多的exe,你都挨着试过么?
- Python流程控制语句详解
- Python线程的生命周期你知道多少,一文帮你全部搞清楚
- 使用Python+Fabric实现Linux自动化操作
- Python循环语句代码详解:while、for、break
- 凭借这5步,我30分钟学会了Python爬虫
- 真香!Python十大常用文件操作,轻松办公
- 别再用手敲了,这个工具可以自动生成python爬虫代码
- 盒马可以加工自带海鲜吗 盒马现场买了海鲜如何加工
- 使用python爬取抖音app视频