【问题标题】:How to send multiple get requests to a website in Python?如何在 Python 中向网站发送多个 get 请求?
【发布时间】:2018-05-18 16:22:00
【问题描述】:

我在计算机科学实验室 (LIRIS) 实习了 3 个月。我的实习主管让我在meilleurs-agents.com 上检索一些数据。这是一个房地产网站,我想检索每个城市的平方米价格。我的程序是用 Python 编写的,我实际上尝试发送多个请求来获取数据。但由于代理错误,它不起作用:

HTTPConnectionPool(host='XXXXXX', port=XXXX): Max retries exceeded with url: "..." (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError('<urllib3.connection.HTTPConnection object at 0x000000000B304320>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed',)))

我的代码预览:

headers = requests.utils.default_headers()
headers.update({
    'User-Agent': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7'
})  
for city, postal_code in zip(cities, postal_codes):
    url = 'https://www.meilleursagents.com/prix-immobilier/'+city+'-'+postal_code+'/'

    PROXY = {'https' : 'XX.XXX.X.XXX:XXXX'}

    try:
        response = requests.get(url, timeout=10, proxies=PROXY)
    except Exception as e :
        print(e)

如果我删除代理,我的请求有效,但 html 代码包含一条消息,例如“你似乎是一个机器人,所以你的请求尚未完成”,所以我无法获得价格......但我真的需要这个数据

希望我的问题很清楚并且有人可以帮助我:)

谢谢,耐莉

PS : 对不起我的英语,我是法国学生 :D

【问题讨论】:

  • 也许你可以试试另一个用户代理?
  • 这个网站有英文版吗,哈哈?它在我的浏览器中以法语显示。
  • 始终在您的问题中隐藏 IP 地址。您可能正在暴露易受攻击的服务器。
  • 对不起,我的回答迟了:D 我尝试了多个用户代理,但没有任何改变...我认为该网站阻止了我的多个请求,我必须在每个查询之间等待大约 1 小时:D 并且没有, 没有英文版
  • @eqperes 我不知道,我会记住的,谢谢你的建议:)

标签: python proxy python-requests


【解决方案1】:

尝试根据您的请求更改 User-Agent 标头和 cookie。

另一种解决方法是尝试在请求之间添加一些超时:

time.sleep(1)  # try to use different time values

这当然会减慢您的脚本速度,但可能有助于避免过多请求错误。

【讨论】:

    猜你喜欢
    • 2011-08-09
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    • 2012-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多