爬虫的ip代理设置问题

import requests
url = "http://www.baidu.com/"
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 '
                  'Safari/537.36'
}
proxies = {
    'http': '37.120.165.19:8000',
    'https': '37.120.165.19:8000'
}
if __name__ == '__main__':
    response = requests.get(url, headers=headers, proxies=proxies, timeout=5)
    print(response.text)

我得到的内容并不是百度的?这是咋回事?

引用新必应
根据您提供的代码,可能是代理IP出现了问题导致获取到的内容不是百度的。可能的原因有以下几个:

  1. 代理IP失效或过期。如果您使用的代理IP已经失效或过期,可能会导致请求被重定向到其他网站,从而得到不是预期的内容。

  2. IP地址被封或黑名单。如果您使用的代理IP被目标网站封禁或加入了黑名单,可能会导致请求被拒绝或重定向到其他页面。

  3. 代理设置错误。如果您对代理设置存在错误,例如IP地址或端口号填写错误,可能会导致请求被无法连接或重定向到其他网站。

为了排除这些可能的问题,您可以进行以下尝试:

  1. 更换代理IP。您可以更换一个可用的代理IP,确保其能够正常连接目标网站,并且没有被封禁或加入黑名单。

  2. 打印请求的响应状态码。在请求后,您可以通过查看响应的状态码,来判断是否存在请求被重定向或被拒绝等情况。可以通过response.status_code的方式来打印状态码,并根据状态码进行调试。

  3. 检查代理设置。可以再次检查代理IP的设置信息是否正确,包括IP地址和端口号等信息。

除此之外,如果您的代理IP是付费使用的,建议联系代理IP提供商寻求帮助,以确保能够正常使用代理IP。

报错了吗,有什么输出信息

应该是你的这个代理的问题,返回的不是百度的。你把url换成url = "https://www.baidu.com/%22
就会提示代理不可用。说明proxies中https的代理没用的,而http的代理虽然有用,但返回的是错误的。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7746432
  • 除此之外, 这篇博客: 利用多线程爬虫搭建代理ip池的两种方法!中的 多线程爬取 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    当然你也可以用多线程爬取,因为我觉得就这样爬就很快了够用了所以我在源码没有放上
    你可以自行加进去
    代码如下:

    with ThreadPoolExecutor(max_workers=5) as t:  # 创建一个最大容纳数量为5的线程池
        task1 = t.submit(pa, (1))   #pa是你爬虫函数
        task2 = t.submit(pa, (2))  # 通过submit提交执行的函数到线程池中
        task3 = t.submit(pa, (3))
        task4 = t.submit(pa, (4))
        task5 = t.submit(pa, (5))

    源码获取加群:1136192749

     


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^