b0207191 发表于 2023-4-21 21:12

python爬需要代理服务器访问的网页什么方案比较好

上网抄了一段代码,代理是用ssr,发现没法抓下来urllib.error.URLError: <urlopen error 远程主机强迫关闭了一个现有的连接。>



from urllib import request
from urllib import parse

data = {
      'first': 'true',
      'pn': 1,
      'kd': 'Python'
    }
   
   
url = "https://网站"   
proxy = request.ProxyHandler({'http':'127.0.0.1:1080'})# 设置proxy
opener = request.build_opener(proxy)# 挂载opener
request.install_opener(opener)# 安装opener
data = parse.urlencode(data).encode('utf-8')
page = opener.open(url, data).read()
page = page.decode('utf-8')

袄_偶滴小乔 发表于 2023-4-21 21:23

路由器上开

鸺鹠 发表于 2023-4-21 21:50

嗯哼喵,看起来你的代理服务器出了些问题的样子。我看你这段代码基本上是没有问题的,应该是代理的问题。可能是ssr有些设置不对或者被封了吧。你可以试试换一个别的代理服务器喵,或者直接使用requests库,会更方便一些哦

Archaeopteryx 发表于 2023-4-21 21:51

本帖最后由 Archaeopteryx 于 2023-4-21 22:24 编辑

编辑一下以免误导人。因为不知道你的目标网站是啥所以我只试了百度可以成功连接。主楼里连接错误有可能有别的原因,建议先试试别的网站,排除proxy设置方面的问题。

###########################################

我这里可以运行的。可能是你缺了某些组件,试试


pip install pysocks
pip install -U requests

糊状物 发表于 2023-4-21 22:10

用urllib写对我来说太硬核了,我觉得只是自己偶然用用的话,用playwright之类比较方便点,一些简单的问题也更直观

wangyi041228 发表于 2023-4-21 22:47

本帖最后由 wangyi041228 于 2023-4-21 22:49 编辑

比较常见的是10080端口,是不是抄错了?WinError是概率事件, 大量爬取无法避免,建议while true: try ... break except包起来
另外推荐aiohttp,或者用简单包装的ez-aio。

定义:
get(urls, binary=False, func=None, fdata=None, li=99, forced=True, ssl=False,proxy=None, headers=None, cookies=None):
post略

例子:
urls = ['https://www.baidu.com'] * 100
results = aio.get(urls,proxy=proxy)

https://pypi.org/project/ez-aio/

すぴぱら 发表于 2023-4-21 22:53

冰寒之月 发表于 2023-4-22 02:27

用requests吧

pip install -U 'requests'

import requests
socks_proxies = dict(http='socks5://user:pass@host:port',
                                 https='socks5://user:pass@host:port')
resp = requests.get('http://web',
                  proxies=socks_proxies)
print(resp.text)

win8 发表于 2023-4-22 08:45

换个思路,你可以直接在国外的服务器上跑这个程序

忘归然 发表于 2023-4-22 09:12

代理要加上https,关闭ssl证书验证

—— 来自 S1Fun

b0207191 发表于 2023-4-22 09:45

糊状物 发表于 2023-4-21 22:10
用urllib写对我来说太硬核了,我觉得只是自己偶然用用的话,用playwright之类比较方便点,一些简单的问题也 ...

搞不来,先用playwright,好处是直接利用了全局代理,不用特意设置proxy参数也能用

缺点是偶尔还是会出现
playwright._impl._api_types.Error: net::ERR_CONNECTION_CLOSED at xxxxx
=========================== logs ===========================
navigating to "xxxxx", waiting until "load"

糊状物 发表于 2023-4-22 10:09

b0207191 发表于 2023-4-22 09:45
搞不来,先用playwright,好处是直接利用了全局代理,不用特意设置proxy参数也能用

缺点是偶尔还是会出 ...

不知道你爬的什么网站, 看错误信息感觉 要么是代理不稳定, 要么触发了对面的反爬保护.

糊状物 发表于 2023-4-22 10:33

b0207191 发表于 2023-4-22 09:45
搞不来,先用playwright,好处是直接利用了全局代理,不用特意设置proxy参数也能用

缺点是偶尔还是会出 ...

忘了说, 你playwright设置个headless=False, 直接显示浏览器, 这种错误直接看页面好了
页: [1]
查看完整版本: python爬需要代理服务器访问的网页什么方案比较好