代理的使用
- 代理网站
- 快代理
- goubanjia
- 西词代理
- 代理的分类属性
- 高匿: 服务器看不到你的代理IP和你的真实IP
- 匿名:看得到代理IP,看不到真实IP
- 透明: 全都可以看到
- 协议类型:
- http: 如果访问的是http的网站,就使用这种
- https: 访问https的网站需要使用
cookie的使用
服务器记录客户端的一种状态
处理cookie的方式
- 手动处理 将网页抓包工具里面的cookie封装到请求头里面即可
- 自动处理
- 使用模块: import requests requests.Session()
- Session: 它是和requests一样可以发送get和post请求, 但是它在请求时可以自动携带cookie
一、代理ip
import requests from lxml import etree url = "http://www.sogou.com/web?query=ip" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36" } page_text = requests.get(url=url, headers=headers, proxies={"http": "114.139.34.209:8118"}).text with open('./ip.html', 'w', encoding="utf-8") as f: f.write(page_text)
二、携带cookie
# 爬取雪球网的新闻数据 import requests from lxml import etree url = "https://xueqiu.com/v4/statuses/public_timeline_by_category.json?since_id=-1&max_id=20362090&count=15&category=-1" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36", "Cookie": "device_id=24700f9f1986800ab4fcc880530dd0ed; aliyungf_tc=AQAAABK6n3cw7gAAVKJXcWhDmqkI22Bf; acw_tc=2760824415784502700746640ecdc6fa0beaa688bbb89de87aa682690a991f; xq_a_token=e50af02165b86c42cf428646aec7411e6404439f; xq_r_token=ee241f41de25b44579f4409da423f8e0e114e005; u=301578450273054; Hm_lvt_1db88642e346389874251b5a1eded6e3=1578450273; Hm_lpvt_1db88642e346389874251b5a1eded6e3=1578450590" } page_json = requests.get(url=url, headers=headers).json() print(page_json)
三、使用session自动处理cookie
# 爬取雪球网的新闻数据(使用Session自动处理cookie) import requests from lxml import etree requests = requests.Session() url = "https://xueqiu.com/v4/statuses/public_timeline_by_category.json?since_id=-1&max_id=20362090&count=15&category=-1" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36" } # 第一步: 向雪球网首页发送一次请求,获取cookie requests.get(url="https://xueqiu.com", headers=headers) # 第二步: 获取动态加载的新闻数据 page_json = requests.get(url=url, headers=headers).json() print(page_json)