user-agent设置了,sleep也是随机的值,我总共大概要爬一万多条数据,这什么时候才爬的完,有师傅指点一下吗?
sleep久一点,伪装一下IP地址
多找几个IP代理池,较少爬取频率,看有作用不?
以下回答参考GPT,并由JoseKe整理完成,希望您能采纳:python
import requests
import time
import random
# 设计请求头信息
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
}
# 代理 IP 列表
proxies = ['http://111.230.*.*:80', 'http://171.97.*.*:80', 'http://175.155.*.*:80']
def spider(url):
# 随机选择 User-Agent 和代理 IP
headers['User-Agent'] = random.choice(headers['User-Agent'])
proxy = random.choice(proxies)
proxies = {
'http:': proxy
}
response = requests.get(url, headers=headers, proxies=proxies)
if response.status_code != 200:
# 若请求失败,休眠一段时间后重试
time.sleep(random.randint(1, 5))
spider(url)
# 处理爬取到的数据
if __name__ == '__main__':
# 处理爬取量大的数据
for i in range(10000):
url = 'target_url'
spider(url)
明显是被反扒机制处理了,只有等一会儿再爬。找代理也会出现的,你几十条线路切换都会被反爬到。越大型,出名的网站越严格,有些抓几十条就被禁了。只有接受。或者把一次爬的次数减少,比如抓某个大型搜索网站,一次100个结果,十多次就爬不了了,但是一次10条,可以一直抓几个小时。
一般爬虫被封的解决方法就是使用代理,当时需要付费购买,免费的非常不稳定,如果你资金充足,直接选择该方法。如果资金不足。可以尝试,加大休眠时间,每次获取的数据条数设置的小一点,user-agents设置多个,每次随机选一个使用,使用selenium来爬取。还有就是可以多找几台机器一起爬取,甚至安装几个虚拟机来跑。
有以下几种可能的解决方案:
增加爬虫的延迟时间,避免频繁访问网站被封禁或限制访问。
使用代理IP,轮流切换IP地址,避免被网站封禁或限制访问。
修改爬虫的请求头信息,模拟浏览器访问,避免被网站识别为爬虫而被封禁或限制访问。
分析网站的反爬虫机制,采取相应的对策,如使用验证码识别、模拟登录等方式。
如果以上方法都无法解决问题,可以考虑联系网站管理员,请求他们提供更多的访问权限或解除限制。