15天学会爬虫 第三天
爬虫
第三天
1.三元运算符
a = b if b else c # 如果b为真,a=b,否则a=c
if b:
a = b
else:
a = c
2.requests处理cookies
-
将cookie字符串直接放入headers中
-
准备cookie字典,在requests请求实传入cookies参数中
cookies_dict = {} requests.get(url,headers=headers,cookies=cookies_dict)
3.js分析
- 观察变化
- 定位js
- 找到触发请求的标签,在标签的eventlistener中找到方法,定位js
- 全局搜索url的关键字
- 执行js
- python代码模拟js
4.requests获取cookie
requests.utils.dict_from_cookiejar
:把cookiejar对象转化为字典
import requests
url = "http://www.baidu.com"
response = requests.get(url)
print(type(response.cookies)) # <class 'requests.cookies.RequestsCookieJar'>
cookies = requests.utils.dict_from_cookiejar(response.cookies)
print(cookies)
5.requests处理证书
国内部分网站虽然采用HTTPS协议,但证书是自行构建的,并非由权威机构颁发的,使用google浏览器访问时,会提示以下错误:
利用requests访问这类网站时,会报错如下:
requests.exceptions.SSLError: HTTPSConnectionPool(host='sls.cdb.com.cn', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')],)",),))
对此,如果需要抓取这类网站时,可以在get或者post请求中,添加一个verify参数,不去校验证书即可
url = "https://sls.cdb.com.cn/"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Firefox/60.0",
}
response = requests.get(url=url, headers=headers,verify=False)
print(response.status_code)
此时,可能会有警告信息,但不会报错了