携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第21天,点击查看详情.
其他文章请点击主页查看哦~ 感兴趣的朋友可以看看~
urllib教程和实践
一、urllib介绍——爬虫鼻祖
urlib库有几个模块,依次如下: request :用于请求网址的模块 error:异常处理模块 parse:用于修改拼接等的模块 robotparser:用来判断哪些网站可以爬,哪些网站不可以爬
二、网址请求
1、请求B站首页
结果:403错误
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的爬虫也不是这么好学的。。。。