Python爬虫知识第五天 urllib教程和实践(十九)

322 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第21天,点击查看详情.

其他文章请点击主页查看哦~ 感兴趣的朋友可以看看~

urllib教程和实践

一、urllib介绍——爬虫鼻祖

urlib库有几个模块,依次如下: request :用于请求网址的模块 error:异常处理模块 parse:用于修改拼接等的模块 robotparser:用来判断哪些网站可以爬,哪些网站不可以爬

二、网址请求

1、请求B站首页

结果:403错误

www.bilibili.com/ 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

import urllib.request
response=urllib.request.urlopen('https://blog.csdn.net/qq_45802978?spm=1000.2115.3001.5343')
print(response.read().decode('utf-8'))

2、请求自己的博客主页 editor.csdn.net/md?not_chec… 在这里插入图片描述 3、利用status返回状态码 在这里插入图片描述 4、访问Facebook 在这里插入图片描述 5、超时设置——在网址后加响应等待时间 在这里插入图片描述 github——10s 在这里插入图片描述 60s 在这里插入图片描述 100s 在这里插入图片描述

三、更深请求

1、打开网址 说明: 第一行导入模块 第二行用Requests请求网址 第三行再用urlopen打开网址 第四行用read打印内容

import urllib.request
request = urllib.request.Request("https://www.csdn.net/?spm=1011.2124.3001.5359")
response=urllib.request.urlopen(request)
print(response.read().decode('utf-8'))

在这里插入图片描述 2、添加请求头 ——模拟浏览器爬取内容,防止被反扒 以第一个没成功的B站为例 在这里插入图片描述

from urllib import request
url='https://www.bilibili.com/'
headers={'User-Agent':'Mozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X) AppleWebKit/604.1.34 (KHTML, like Gecko) Version/11.0 Mobile/15A5341f Safari/604.1'}

req=request.Request(url=url,headers=headers)
response=request.urlopen(req)
print(response.read().decode('utf-8'))

代码说明:

第一行从库导入模块

第二行就是我们需要请求的网址

第三行就是我们的请求头,固定这个模式,不用去背,以后添加请求头复制粘贴就行

第四行就是使用请求头去请求网址

第五行:请求成功打开网址

第六行用read打印内容

爬取成功 在这里插入图片描述 3、链接解析 B站为例

1).urlparse——拆分URL 在这里插入图片描述

from urllib.parse import urlparse
s=urlparse('https://www.bilibili.com/')#解析的网址
print(type(s),s)#打印类型和解析结果

结果:

<class 'urllib.parse.ParseResult'> ParseResult(scheme='https', netloc='www.bilibili.com', path='/', params='', query='', fragment='')

分析: 在这里插入图片描述 2)、urlumparse——构造URL 与1相反,接受的参数是可迭代对象,且长度为6 在这里插入图片描述 3)、urlsplit 返回结果是5个参数,params合并到了path中 在这里插入图片描述 SplitResult是元组类型,可以通过索取获得想要的 在这里插入图片描述 在这里插入图片描述 4)、urlunsplit()——复原URL,长度为5

from urllib.parse import urlunsplit
data=['http','www.csdn.net','/','spm=1011.2124.3001.5359',' ']
print(urlunsplit(data))
from urllib.parse import urlunsplit
data=['https://www.bilibili.com/']
print(urlunsplit(data))

在这里插入图片描述 5)、urljoin——对链接进行补充合并 在这里插入图片描述 6)、urlencode——构造url

from urllib.parse import urlencode
parms={
    'name':'chuan',
    'age':'20'
}
b_url='http://www.baidu.com?'
url=b_url+urlencode(parms)
print(url)

在这里插入图片描述

7)、parse_qs——把得到的get请求参数字符串转化为字典

from urllib.parse import parse_qs
u='name=chuan&age=20'
print(parse_qs(u))

在这里插入图片描述

8)、parse_sql——返回列表,列表内容为元祖

from urllib.parse import parse_qsl
u='name=chuan&age=20'
print(parse_qsl(u))

在这里插入图片描述

9)、quote——把中文转化为url格式,对中文进行编码

from urllib.parse import quote
key='川川'
url='http://www.baidu.com/?wd='+quote(key)
print(url)

在这里插入图片描述

10)、unquote——还原中文编码

from urllib.parse import unquote
url='http://www.baidu.com/?wd=%E5%B7%9D%E5%B7%9D'
print(unquote(url))

在这里插入图片描述

四、robots协议

爬虫能爬什么的说明。。。

1、学会查看协议——在网址后加入robots.txt 在这里插入图片描述 说明:

user-agent:后面是蜘蛛的名称,表示一种代理的意思;

disallowed: 表示禁止,后面的内容蜘蛛禁止抓取;

allowed :表示允许蜘蛛抓取后面文件的内容;

五、万能视频下载

1、安装包:

pip install you_get

在这里插入图片描述 没成功 在这里插入图片描述

总结

Python的爬虫也不是这么好学的。。。。