python 通过代理抓取数据

前言

有一些网站和数据,是不通过代理访问不到的(不管是不是正经的 :) )。如何用Python抓取这些数据呢?

正文

1,设置代理

因为我们的程序是在终端里执行,所以需要先设置一下:
- 设置在终端下能够使用代理
- 启用ss代理,且本地代理为socks5://127.0.0.1:1080

可以参考文章:Make the python requests work via socks proxy on CentOS server

2,安装第三方库

pip install requests
pip install lxml
pip install PySocks

3,抓取脚本


import requests
import ssl
from urllib.request import urlretrieve
import socket
import socks

def get_pic():

    # 设置代理
    socks.set_default_proxy(socks.SOCKS5, "127.0.0.1", 1080)
    socket.socket = socks.socksocket


    # 想要抓取的图片 重定向后的链接
    url = 'your-url'

    # 方法1
    ssl._create_default_https_context = ssl._create_unverified_context
    urlretrieve(url, 'my.jpg')

    # 方法2
    # session = requests.Session()
    # req = session.get(url)
    # with open('./my.jpg', 'wb') as f:
    #     f.write(req.content)
    #     f.flush()

if __name__ == '__main__':
    get_pic()

4,其它方式

还有一种方式,是使用支持SOCKS协议代理的requests,方法请参考: 
python-requests socks5

参考:
Python中Request 使用socks5代理的两种方法(个人推荐方法二)
python-requests socks5
Make the python requests work via socks proxy on CentOS server
requests 通过 socks5
py脚本走代理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值