爬虫-使用代理ip,使用session

本文介绍了如何在爬虫中使用代理IP进行网页抓取,强调了选择与目标网站相同协议的代理,并给出了字典格式的proxies设置。此外,还讲解了利用Session进行登录并获取登录后页面数据的方法,以豆瓣为例,通过session.post进行登陆,然后使用session.get获取个人页面信息。

1、使用代理ip和普通requests.get请求抓取页面流程一样,只是多了个参数proxies.

import requests

url='https://www.baidu.com/s?wd=ip&ie=utf-8'

proxies={
    "https":"218.60.8.99:3129"    
}

headers={
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
}


response=requests.get(url=url,proxies=proxies,headers=headers)

with open('baiduip.html','w',encoding='utf-8') as f:
    f.write(response.text)

2、使用session抓取需要登陆之后才能看到的页面数据

  • 获取session对象:session=requests.session()
  • session.post请求登陆url存储session信息
  • session.get请求获取登陆之后的个人页面
    以豆瓣为例:
import requests
# 先用session登陆获取存储session
session=requests.session()
login_url='https://accounts.douban.com/j/mobile/login/basic'

data={
'ck':'',
'name':'',
'password':'',
'remember':'false',
'ticket':''
    
}

headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}

login_response=session.post(url=login_url,data=data,headers=headers)

# 再用session获取想要的页面 https://www.douban.com/people/193627830/
url='https://www.douban.com/people/1230/'
response=session.get(url=url,headers=headers)
with open('doubanlogin.html','w',encoding='utf-8')as f:
    f.write(response.text)
在网络爬虫中,使用代理IPSession可以帮助我们更高效地进行数据抓取,同时避免被目标网站封禁。以下是详细的讲解和代码示例。 ### 1. 什么是Session代理IP- **Session**:在Web应用中,Session用于在客户端和服务器之间保持状态。爬虫使用Session可以模拟浏览器行为,保持登录状态等。 - **代理IP**:代理IP用于隐藏真实IP地址,防止被目标网站封禁。代理IP可以是透明的或匿名的。 ### 2. 如何使用Session代理IP进行爬虫? 我们使用`requests`库来演示如何结合Session代理IP进行爬虫。 #### 代码示例: ```python import requests # 定义代理IP proxies = { 'http': 'http://your_proxy_ip:port', 'https': 'https://your_proxy_ip:port', } # 创建Session对象 session = requests.Session() # 设置请求头,模拟浏览器行为 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3' } # 使用Session发送请求 response = session.get('http://example.com', headers=headers, proxies=proxies) # 检查请求是否成功 if response.status_code == 200: print('请求成功') print(response.text) else: print('请求失败,状态码:', response.status_code) ``` ### 3. 详细步骤说明 1. **定义代理IP**:在`proxies`字典中定义HTTP和HTTPS代理。 2. **创建Session对象**:使用`requests.Session()`创建一个Session对象。 3. **设置请求头**:在`headers`字典中设置请求头,模拟浏览器行为。 4. **发送请求**:使用Session对象的`get`方法发送请求,并传入代理IP和请求头。 5. **检查请求状态**:根据返回的状态码判断请求是否成功。 ### 4. 注意事项 - **代理IP的稳定性**:代理IP的稳定性直接影响爬虫的成功率,建议使用高质量的代理IP- **请求频率**:避免频繁请求同一个网站,以防被封禁。可以使用`time.sleep()`控制请求频率。 - **异常处理**:在实际应用中,建议添加异常处理机制,处理网络异常等情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值