首页 > 解决方案 > 带有代理的python请求

问题描述

在我的脚本中,我试图向 q 代理服务器发出请求。我只是这样做:

import requests

response = requests.get('https://websiteiwhantget', proxies={"http": '176.36.111.9:56323', "https": '176.36.111.9:56323'})

我从https://free-proxy-list.net/获得的代理 ip 地址,但是当我运行 sript 时,我在 get 调用中输入的每个网站都有:

引发 ProxyError(e, request=request) requests.exceptions.ProxyError: HTTPSConnectionPool(host='www.moma.com', port=443): url: / (Caused by ProxyError('Cannot connect to proxy. ', RemoteDisconnected('远程结束关闭连接无响应',)))

如果我删除 requests.get 中的代理指令,一切都完成了。为什么使用代理我的脚本不起作用?是免费代理列表中列出的代理错误还是我必须更改我的 python 调用?我使用 python 3.6

提前非常感谢

标签: python-3.xweb-scrapingproxy

解决方案


阅读:https ://www.scrapehero.com/how-to-rotate-proxies-and-ip-addresses-using-python-3/

试试这个:

    import requests
    import random
    from lxml.html import fromstring

    url = 'https://free-proxy-list.net/anonymous-proxy.html'
    response = requests.get(url)
    parser = fromstring(response.text)
    proxies = []
    for i in parser.xpath('//tbody/tr')[:20]:
        if i.xpath('.//td[7][contains(text(),"yes")]'):
            proxy = ":".join([i.xpath('.//td[1]/text()')[0], i.xpath('.//td[2]/text()')[0]])

        try:
            t = requests.get("https://www.google.com/", proxies={"http": proxy, "https": proxy}, timeout=5)
            if t.status_code == requests.codes.ok:
                proxies.append(proxy)
        except:
            pass

    proxy = proxies[random.randint(0, len(proxies)-1)]

    response = requests.get('https://websiteiwhantget', proxies={"http": proxy, "https": proxy})

推荐阅读