phtyon内置HTTP请求库,有四个模块:
①requests:发起请求
urllib.requests.urlopen(url,data=None,[timeout,]*)
url:请求地址 data:请求参数 timeout:设置超时
②error:处理错误
URLEorror:处理程序在遇到问题时会引发异常(或其派发的异常),只有应该reason属性。
HTTPError:是URLError的一个子类,拥有更多的属性(code,reason,headers等),适用于处理特殊HTTP错误。
ContentTooShortError:此异常会在urlretrieve()函数检测到已下载的数据量小于期待的数据量(由Content-Length头给定)是被引发。content属性将存放已下载(困难被截断)的数据。
③parse:解析RUL或者目录
定义url的标准接口,实现url的各种抽取,解析,合并,编码,解码。
④ robotparser:解析网站的robot.txt
import urllib.request
import urllib.parse
# urllib简单运用
if __name__ == '__main__':
'''urlopen方法'''
# response = urllib.request.urlopen('https://www.python.org/')
# # print(response.read().decode('utf-8'))
# # 返回响应类型
# print(type(response))
# # 返回状态码
# print(response.status)
# # 返回响应头信息
# print(response.getheaders())
# # 获取指定参数的值
# print(response.getheader('Server'))
'''data参数'''
data = bytes(urllib.parse.urlencode({'name': 'germey'}), encoding='utf-8')
response = urllib.request.urlopen('https://www.httpbin.org/post', data=data)
print(response.read().decode('utf-8'))
* | 表示匹配前面的子表达式任意次,包括0次 |
. | 表示匹配任意单个字符,除转义字符外 |
+ | 表示匹配前面的子表达式一次或多次,不包括01次 |
? | 表示匹配1次或0次 |
{a,b} | 指定匹配次数,最少出现a次,最多出现b次 |
\ | 表示对原字符进行转义 |
\d | 匹配0-9之间任意一个字符,等价于表达式[0-9] |
\D | 匹配一个不是0-9之间的数字字符,等价于表达式[……0-9] |
\s | 匹配任意一个空白字符,包括空格,tab,换行符等,等价于[\t\n\r\f\v] |
\S | 匹配任意一个非空白字符,等价于表达式[^\t\n\r\f\v] |
\w | 匹配任意一个文本字符,包括大小写字母,数字,下划线,等价于[a-zA-Z0-9_] |
\W | 匹配任意一个非文本字符,等价于表达式[^a-zA-Z0-9_] |
[a] | 指定匹配a |
[^a] | 匹配a以外的 |
^ | 表示匹配文本的起始位置 |
$ | 表示匹配文本的结束位置 |
() | 组,将匹配的内容作为一个整体 |
re.compile():生成一个正则表达式对象,供match()和sea()函数使用。
re.search():扫描字符串返回第一个成功匹配的字符串,如果没有,就返回None.
re.match():匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None。
re.findall():字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。
re.sub():表示替换,将匹配到的数据进⾏替换。
re.split():根据匹配进⾏切割字符串,并返回⼀个列表。
get(url,headers,params,timeout,proxies,args):对指定url发起请求。
url:请求网址
params:请求参数
headers:请求头信息,User-Agent
timeout:设置请求超时时间
proxies:设置代理服务器
post(url,headers,encoding,json,cookies,args):对指定url发起请求。
url:请求网址
headers:请求头信息,User-Agent
encoding:解码 r.text 的编码方式
json:返回结果的 JSON 对象 (结果需要以 JSON 格式编写的,否则会引发错误)
cookies:返回一个 CookieJar 对象,包含了从服务器发回的 cookie
import requests
# 使用requests爬取百度翻译
word = input('请输入一个单词:')
url = 'https://fanyi.baidu.com/sug'
data = {
'kw': word
}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.43'
}
response = requests.post(url=url, data=data, headers=headers)
print(response.json())