1 bytes转换成python对象 (json.loads(变量))
2 post请求 创建访问对象 request.Request()
3 转换成str parse.urlencode(变量).encode('utf-8')
4 headers头正则 ^(.*?):(.*) ($1):($2),
————————————————————————————————————————————————————————
加密:
def md5_my(need_str):
import hashlib
#创建md5对象
md5_o=hashlib.md5()
#需要有bystes作为参数
sign_bystes=need_str.encode('utf-8')
#更新md5_o的值
sign_str=md5_o.hexdigest()
#返回值
return sign_str
————————————————————————————————————————————————————————
a=parse.urljoin(url,href) url:原url,与href重合部分会被替换掉 —— href:需要拼接的部分
————————————————————————————————————————————————
cookie的保存:
def opener():
from http import cookiejar
#通过对象保存cookie
cookie_object = cookiejar.CookieJar()
#创建handler,handler对应一个操作
handler=request.HTTPCookieProcessor(cookie_object)
#创建opener,调用handler内部函数,存储到cookie_object
opener=request.build_opener(handler)
#返回值
return opener
——————————————————————————————————————————
代理管理器
handler = request.ProxyHandler(proxy)
# 生成 opener.open = urlopen
opener = request.build_opener(handler)
————————————————————————————————————————————————————————
repr('原样输出')
data=(22,content2)
sql="insert into 表名 values (%s,%s)"
#正则
res=re.match('从第一个开始',变量名)
res.group(0) 匹配到的字符串
res.group(1)匹配到第一个我们括号的内容
res=re.search('从任意位置开始匹配',变量名)
res=re.findall('匹配规则',变量名) #匹配全部 返回列表
res=re.sub('规则','替换内容',变量名)
————————————————————————————————————————
\w(匹配包含下划线任意字符除空格) *(匹配0-n次)
\d (匹配一个数字) + (匹配1-n次)
{} (匹配上个字符次数) [] (匹配范围)
\s 匹配任意空白字符,等价于 [\t\n\r\f]
如果.*匹配多行 需要在变量名后面,加上re.S
去除标签
des = re.search('<li class="current">职位描述</li>(.*)<b>工作地址:</b>',html, re.S)
aaa = des.group(1)
# 导入去除标签包
from w3lib.html import remove_tags
# 去除标签
want = remove_tags(aaa)
print(want)
a=r'.*(.).*\1' 匹配到第一个重复出现的字符
list_=变量名.split('\n') 以换行符分割成列表
';'.join(变量名) 将变量名以;连接成字符串
————————————————————————————————————————————————————————
response = requests.get(url,proxies,timeout=5(等待五秒))
response.status_code #返回的是状态码
————————————————————————————————————————————————————————
变量名.strip() #去除空格
获取网页转码问题
在某个网页看到这么一句话:“大多数网站都对支持gzip压缩的浏览器做了gzip的压缩,在python中可以通过gzip包处理gzip压缩过的网页”
所以问题就是内容有压缩过,直接decode不行,需要用gzip来解压。然后再decode。
import gzip
...
html = gzip.decompress(response)
html = html.decode('gbk')
用gb2312不行,用gbk却可以,因为gbk包含gb2312,所以可以知道的是网页源码有超出gb2312编码范围的字符
转换问题
from urllib import parse
import json
data = {
'email':'asdadas',
'password':'132sad'
}
# 字典转成字符串
data = parse.urlencode(data)
# 将字符串转成bytes字节流 等同于a = data.encode(encoding=('utf-8'))
a = bytes(data,encoding='utf-8')
print(a) # b'email=asdadas&password=132sad'
# 将字节流转成字符串
# b = a.decode()
# print(b) # email=asdadas&password=132sad
# email=asdadas&password=132sad
# 将 & 替换成 ; 输出:password=132sad;email=asdadas
# list_=b.replace('&',';')
# print(list_)
# password=132sad;email=asdadas