网站推广的技术,seo黑帽是什么意思,开发板是干什么的,一个公司为什么要做网站目录
一、背景现象
二、准备工作
三、代码实现 一、背景现象 最近在做爬虫项目时#xff0c;爬取的网站#xff0c;如果发送请求太频繁的话#xff0c;对方网站会先是响应缓慢#xff0c;最后是封禁一段时间。一直是拒绝连接#xff0c;导致程序无法正常预期的爬取数据… 目录
一、背景现象
二、准备工作
三、代码实现 一、背景现象 最近在做爬虫项目时爬取的网站如果发送请求太频繁的话对方网站会先是响应缓慢最后是封禁一段时间。一直是拒绝连接导致程序无法正常预期的爬取数据。针对这种情况可以使用代理ip请求来规避同时增加一些随机等待时间如果性能要求不高。 二、准备工作 若要用代理ip去请求那首先要有一个或多个代理ip。代理ip的获取可以寻找专门搜集提供代理ip的网站如果有私人或公用的代理ip就更好了直接使用即可。 这里注意一般提供的代理ip会有匿名程度有透明、普匿、高匿等。如果你使用了匿名程度为透明的ip去请求那么代理ip方会看到你用人家的ip干了什么就是说你的行为透明化对于代理ip提供方。相反高匿你的行为不会对代理ip提供方公开。 三、代码实现 基本思路就是使用代理ip进行请求获取请求响应返回。使用request库配置请求代理ip即可。
import requests
import random
from retrying import retry# 代理ip
proxy_list [http://ip:port,http://ip:port
]reqSession requests.Session()
# # 也可以直接设置全局
# reqSession.proxies {
# http: http://121.37.195.205:80,
# https: http://121.37.195.205:80,
# }retry(stop_max_attempt_number10, wait_random_min10000, wait_random_max50000)
def get_detail_data(page_url):# 随机选取一个ip使用避免一直使用一个ip导致被封禁。one_proxy random.choice(proxy_list)proxy {http: one_proxy,https:: one_proxy}resPage reqSession.get(page_url, headersheaders, proxiesproxy, timeout100)if resPage.status_code ! 200:raisereturn resPage.text 四、总结 虽然现在可以解决ip封禁的问题但是代码还是有一些隐形问题的。后续如果你使用的代理ip若失效了但你不知道或没有及时更换的情况。解决办法是将代理ip存储到数据库另外写一个爬虫程序去收集代理ip更换数据库里的代理ip。业务爬虫程序读取数据库里的代理ip去进行请求。同时可以设置程序异常发送邮件这样也可以及时定位问题。