gpt4 book ai didi

python - 如何在 Python/BS4 中向我的网页抓取脚本添加代理和 header ?

转载 作者:行者123 更新时间:2023-11-30 22:28:13 28 4
gpt4 key购买 nike

我过去曾几次使用BeautifulSoup4和Python来解析本地html文件。现在我想使用代理抓取网站。 (总共需要400个请求/100个请求后IP确实被阻止)

在使用普通的“ sleep ”减慢我的脚本速度后,我想使用代理,但我以前从未这样做过,并且这里确实需要一些帮助。在 Stack Overflow 问题的帮助下,我尝试了两种方法:

方法一
此方法确实适用于其他网站,但不下载数据。当我“打印”收到的数据时,它确实打印“响应[200]”。当我在真实网站上尝试此方法时,它确实返回错误:“URL 超出了最大重试次数:”我怀疑代理没有被正确处理。当我尝试读取 html 时,出现以下错误。

page_html = response.read()
AttributeError: 'Response' object has no attribute 'read'

response = requests.get(URL, proxies=PROXY, headers=HEADER)

方法2
我可以下载另一个网页,但无法从原始网页下载(这阻止了我)。我认为脚本有错误并且代理处理不正确。要么将真实IP发送到网站,要么无法连接到代理:

response = urllib.request.urlopen(urllib.request.Request(url, None, header, proxy))

我的脚本确实是这样的:

HEADER = {'User-Agent': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7'}
URL = "https://www.website.php"
PROXY = {"https": "https//59.110.7.190:1080"}

#response.close() Is this even necessary

page_html = response.read() # With Method 1 I also tried response.text which resulted in "str is not callable"
response.close()
page_soup = soup(page_html, "html.parser")

adresses = page_soup.findAll("li", {"class":"list-group-item"})

for address in adresses:
try:
#parsing the html
except (TypeError):
f.write("invalid data" + "\n")
time.sleep(random.randint(1, 10))

我通常遇到的错误如下:

requests.exceptions.ProxyError: HTTPSConnectionPool(host='www.firmendb.de', port=443): Max retries exceeded with url: /[website.php] (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError(': Failed to establish a new connection: [Errno 11001] getaddrinfo failed',)))

Process finished with exit code 1

我认为我搞乱了脚本的代理部分。在我尝试实现之前它确实有效。因为我之前从未这样做过,所以我的主要问题是,代理部分正确吗?我从以下网站获得代理:https://free-proxy-list.net/

  • 如何从这些列表中选择代理?
  • 如何连接到代理?
  • 对使用代理提供商有什么建议吗?
  • 对我的剧本有什么建议吗?

最佳答案

如果您不介意使用 API,我可以推荐 https://gimmeproxy.com事实证明,这是工作代理的可靠来源。

甚至还有一个 python 包装器:https://github.com/ericfourrier/gimmeproxy-api

结果将是这样的:

{
"supportsHttps": true,
"protocol": "socks5",
"ip": "19.162.12.82",
"port": "915",
"get": true,
"post": true,
"cookies": true,
"referer": true,
"user-agent": true,
"anonymityLevel": 1,
"websites": {
"example": true,
"google": false,
"amazon": true
},
"country": "US",
"tsChecked": 1517952910,
"curl": "socks5://19.162.12.82:915",
"ipPort": "19.162.12.82:915",
"type": "socks5",
"speed": 17.7,
"otherProtocols": {}
}

关于python - 如何在 Python/BS4 中向我的网页抓取脚本添加代理和 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46682144/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com