Requests库
一. 优点
二. 使用方法
-
User-Agent
包含电脑信息和浏览器信息,为了反爬,采用多个User-Agent的方式。网上可查询到
headers = { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36' } response = requests.get(url=url, headers=headers)
-
IP
登录网页ip,为了反爬,采用多个ip的方式。网上有免费和收费两种
free_proxy = {'http': '45.136.245.22:8080'} response = requests.get(url=url,proxies=free_proxy)
-
Cookie
1)手动
cookies = '_ga=GA1.2.1820447474.1535025127; MEIQIA_EXTRA_TRACK_ID=199Tty9OyANCXtHaSobJs67FU7J; cook_dict = {cookie.split('=')[0]:cookie.split('=')[1] for cookie in cookies.split('; ')} response = requests.get(url=url,cookies=cook_dict)
2)自动登录信息获取并登录
url = 'https://www.yaozh.com/member/' # 1.代码登录 session = requests.session() # session 类 可以自动保存cookies # 登录界面checkN->preservelog->login->find: 1)login_url 2)post->form_data;get->query login_url = 'https://www.yaozh.com/login' login_form_data = { 'username':'xiaomaoera12', 'pwd': 'lina081012', 'formhash': '54AC1EE419', 'backurl': 'https%3A%2F%2Fwww.yaozh.com%2F', } login_response = session.post(login_url,data=login_form_data,headers=headers) # 2.登录成功之后 带着 有效的cookies 访问 请求目标数据 data = session.get(member_url,headers=headers).content.decode()
-
SSL取消认证
因为https 是有第三方CA 证书认证的,但是有的网站虽然是https 但是 它不是CA证书, 而是他自己颁布的证书(例如12306)。解决方法 是: 告诉web 忽略证书访问
response = requests.get(url=url, headers=headers, proxies=free_proxy ,verify=False)
-
返回数据提取Text&Content
1) text(更常用)
返回的是Unicode型的数据。
content = r.text #先读取 html = etree.HTML(content) #再解码
2) content(可能有不能解析的)
返回的是bytes数据。
两种形式utf-8和gbk:
*** utf-8->decode(“utf-8”)(linux&mac默认)->file.write(data,encoding=“utf-8”)
*** gbk->decode(“gbk”)(win默认)->file.write(data,encoding=“gbk”)
-