版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_40313634/article/details/90708014
爬虫常用方法
makedown 语法
request 常用方法
1. 请求网页
代码语言:javascript复制import requests
headers = {
'user-agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36'
}
data = {
'ie': 'utf-8',
'tn': 'baidu',
'wd': 'python'
}
url = 'https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=python&rsv_pq=934b6a7100010d36&rsv_t=60d37A5z9ROfcyxNYhFux2MawwK+2kme47GF1tQy5WPG38k0cTYUHviVL9U&rqlang=cn&rsv_enter=1&rsv_sug3=6&rsv_sug1=6&rsv_sug7=100&rsv_sug2=0&inputT=2783&rsv_sug4=2784&rsv_sug=2'
r = requests.get(url, params=data, headers=headers, timeout=1) # 最多等待1秒。留空则无限等待。
if r.status_code == requests.codes.ok:
print('访问成功')
# r.cookies、r.text:文本信息、r.json()、r.content:二进制信息
2. 维持会话
代码语言:javascript复制import requests
s = requests.Session()
s.get('http://httpbin.org/cookies/set/number/123456789') # 设置cookies
r = s.get('http://httpbin.org/cookies') # 沿用设置的cookies
print(r.text)
3. 忽略 SSL 证书验证
代码语言:javascript复制import requests
from requests.packages import urllib3
urllib3.disable_warnings() # 屏蔽告警信息
r = requests.get('https://www.12306.cn', verify=False)
print(r.status_code)
4. 身份认证
代码语言:javascript复制import requests
from requests.auth import HTTPBasicAuth
r = requests.get('http://localhost:5000', auth=('username', 'password'))
print(r.status_code)
正则表达式
1. 常用方法
代码语言:javascript复制import re
content = 'Extra strings Hello 1234567 world_This is a dog string'
result = re.match('Extra.*?(d ).*?world', content) # 只能从字符串开头开始匹配
print(result.group(), result.group(1), result.span())
result = re.search('Extra.*?(d ).*?world', content) # 可以从任意位置开始匹配:返回匹配到的第一个字串
print(result.group(), result.group(1), result.span())
result = re.findall('Extra.*?(d ).*?world', content) # 可以从任意位置开始匹配:返回匹配到所有字串的list
print(result)
result = re.sub('d ', '', content) # 类似 replace 函数:替换
print(result)
2. 常用修饰符
代码语言:javascript复制re.I : 忽略大写小写
re.S : 忽略换行
信息保存
1. 网页信息保存
代码语言:javascript复制with open('baidu.html', 'w', encoding='utf-8') as f:
f.write(r.text)
2. 二进制信息保存:图片、视频等
代码语言:javascript复制with open('baidu.html', 'wb', encoding='utf-8') as f:
f.write(r.content)