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出现了问题导致获取到的内容不是百度的。可能的原因有以下几个:
代理IP失效或过期。如果您使用的代理IP已经失效或过期,可能会导致请求被重定向到其他网站,从而得到不是预期的内容。
IP地址被封或黑名单。如果您使用的代理IP被目标网站封禁或加入了黑名单,可能会导致请求被拒绝或重定向到其他页面。
代理设置错误。如果您对代理设置存在错误,例如IP地址或端口号填写错误,可能会导致请求被无法连接或重定向到其他网站。
为了排除这些可能的问题,您可以进行以下尝试:
更换代理IP。您可以更换一个可用的代理IP,确保其能够正常连接目标网站,并且没有被封禁或加入黑名单。
打印请求的响应状态码。在请求后,您可以通过查看响应的状态码,来判断是否存在请求被重定向或被拒绝等情况。可以通过response.status_code
的方式来打印状态码,并根据状态码进行调试。
检查代理设置。可以再次检查代理IP的设置信息是否正确,包括IP地址和端口号等信息。
除此之外,如果您的代理IP是付费使用的,建议联系代理IP提供商寻求帮助,以确保能够正常使用代理IP。
报错了吗,有什么输出信息
应该是你的这个代理的问题,返回的不是百度的。你把url换成url = "https://www.baidu.com/%22
就会提示代理不可用。说明proxies中https的代理没用的,而http的代理虽然有用,但返回的是错误的。
当然你也可以用多线程爬取,因为我觉得就这样爬就很快了够用了所以我在源码没有放上
你可以自行加进去
代码如下:
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