各种小笔记
json库 字符串和字典的转换
x = json.loads(y) 把y字符串变成x字典
x = json.dumps(y) 把y字典变成字符串
Unicode编码输出
print x.encode('utf-8')
Python 以字符串的形式导入模块
from importlib import import_module
file = import_module(file_name)
爬取时如果request的html文本里没有所需要的数据应该是js加载出来的。在network里查找数据来抓包,找到真实url。如果需要的话要伪装HEADERS 和 post data
有些数据是js代码计算得到的,此时要在source里面查找html代码所在位置,分析js代码的逻辑计算得到所需要的数据。
HTTP常见状态码
- 200 – 服务器成功返回网页
- 304 – 网页未修改,使用本地缓存
- 404 – 请求的网页不存在
- 503 – 服务器超时
在构造URL时如果用到中文的话,需要urllib.quote(string)
os.listdir('dir') 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。
sys.argv[0]是该文件的绝对路径
代理云的使用
疯狂踩坑:
某个可迭代的东西的数据集合要在for外面定义!!!!!!
先定义,再开始for
网关(gateway)
就是从一个网络连接到另一个网络的关口
域名(英语:Domain Name)
网域名称系统(DNS,Domain Name System)
网卡
是一种配件(硬件),也就是可以用来接通网络的一个硬件接口。所以,单纯的网卡并不能够实现对网络的链接,还需要网卡驱动(程序)。
vpn的原理
两个私有IP不能直接连接。IP 1 把数据报发给自己的网关,网关封装数据报,加上自己的地址的源地址,原来的目的地址所在的网关的地址为目的地址。这样就构造出了一个tunnel(隧道),到达IP 2 的网关后,去掉头部,得到原来的数据报,就可以路由给IP 2 ,实现通信。
python中sys.setdefaultencoding('utf-8')
当读取到的中文字符不是utf-8时,这条语句可以转化为utf-8,解决编码问题
https://github.com/xingshaocheng/architect-awesome/blob/master/README.md
Python中的global
global语句使得函数可以使用全局变量
python如何以request payload形式发送post请求
普通的http的post请求的请求content-type类型是:Content-Type:application/x-www-form-urlencoded, 而另外一种形式request payload,其Content-Type为application/json
import json
url = 'https://api.github.com/some/endpoint'
payload = {'some': 'data'}
headers = {'content-type': 'application/json'}
r = requests.post(url, data=json.dumps(payload), headers=headers)
爬虫response数据格式
response.content 是最原始的数据
response.text 经过了奇奇怪怪的编码
Mac下 .bash_profile 和 .zshrc 两者之间的区别
.bash_profile 中修改环境变量只对当前窗口有效,而且需要 source ~/.bash_profile才能使用
.zshrc 则相当于 windows 的开机启动的环境变量
你也可以在 .zshrc 文件中加一行 source .bash_profile 解决需要 source 才能使用的问题
Python urllib模块urlopen()与urlretrieve()详解
1.urlopen()方法
创建一个表示远程url的类文件对象,然后像本地文件一样操作这个类文件对象来获取远程数据。
urlopen返回 一个类文件对象,它提供了如下方法:
read() , readline() , readlines() , fileno() , close() :这些方法的使用方式与文件对象完全一样;
info():返回一个httplib.HTTPMessage 对象,表示远程服务器返回的头信息
getcode():返回Http状态码。如果是http请求,200表示请求成功完成;404表示网址未找到;
geturl():返回请求的url;
2.urlretrieve方法
直接将远程数据下载到本地。
urllib.urlretrieve(url, filepath)
filepath 是文件的绝对路径名,包括了文件名