三元运算符
if 条件成立,if前面的结果赋值给to,否则else后面的内容赋值给to
to = "en" if lan=="zh" else "zh"
requests进行携带cookie登录
- cookie字符串放在headers中
- 把cookie字典交给requests请求方法的cookies
字典推导式
In [8]: {i:i+10 for i in range(10)}
Out[8]: {0: 10, 1: 11, 2: 12, 3: 13, 4: 14, 5: 15, 6: 16, 7: 17, 8: 18, 9: 19}
In [9]: {i:i+10 for i in range(10) if i%2==0}
Out[9]: {0: 10, 2: 12, 4: 14, 6: 16, 8: 18}
寻找登录接口的方法
-
form表单action对应的url地址
- 用户名和密码的input标签中,name的值作为键,用户名和密码作为值的字典,作为post data
-
通过抓包,定位url地址
- form data
分析js,获取加密的数据
-
观察变化
-
定位js
- 通过event listener定位js的位置
- 通过搜索url地址中的关键字,通过chrome的search all file来进行搜索
-
进行分析
- 通过添加断点的方式分析js
-
执行js
- 完全的使用python模拟js的执行过程
requests处理ssl证书
requests.get(url,verify=False)
获取响应中的cookie,转化为字典
response = requests.get(url,headers=headers)
requests.utils.dict_from_cookiejar(response.cookies)
超时参数的使用
requests.get(url,timeout=3)
retrying模块的使用
- from retrying import retry
- 通过装饰器的方式使用retry,进行异常捕获,重新执行被装饰的函数
数据的分类
-
结构化数据
- json,xml
- 直接使用模块转化为python类型
-
非结构化数据
- html
- re,xpath
json模块的使用
json.loads:json字符串转化为python类型
json.dumps : python类型转化为json字符串
json.load: 包含json字符串的类文件对象转化为python类型
json.dump: 把p需求:爬取苏宁易购所有下所有图书和图书分类信息
,以
那么对于为什么需要模拟登陆?
获取cookie,能够爬取登陆后的页面