使用同一个ip去爬取同一个网站的网页,可能会被屏蔽,这个时候,我们就可以使用代理服务器来解决这个问题网上的免费获取代理服务器地址的网站,大脚可以自行搜索,一般可以用他们提供的免费代理服务器地址,当然如果有钱的话,用付费的可能会靠谱一点,我来为大家讲解一下关于python爬虫系统搭建?跟着小编一起来看一看吧!
python爬虫系统搭建
使用同一个ip去爬取同一个网站的网页,可能会被屏蔽,这个时候,我们就可以使用代理服务器来解决这个问题。网上的免费获取代理服务器地址的网站,大脚可以自行搜索,一般可以用他们提供的免费代理服务器地址,当然如果有钱的话,用付费的可能会靠谱一点。
那么怎么利用这些个地址呢,我的建议是可以自己写一个爬虫(后面会写一个源码供大家参考),然后把提供代理服务器地址的网站的ip地址一个一个爬取出来,存放到一个文件,或者数据库,可以存在MongoDB里面。要用的时候,读取出来,就可以用来设置代理服务器地址了。代理服务器地址的更换、检验可用与否等都可以通过代码整合起来调用。
那么具体怎么设置呢,其实非常简单。这里我们主要讲urllib和Requests两种方法的代理服务器设置,直接看代码,很容易就懂了。
urllib设置方法
import urllib.request
def use_proxy(proxy_addr,url):
proxy= urllib.request.ProxyHandler({‘http’:proxy_addr})
opener = urllib.request.build_opener(proxy)
request = urllib.request.Request(url)
response = opener.open(request)
print(response.headers)
data = response.read().decode(‘utf-8’)
return data
proxy_addr=“183.148.140.162:9999” #代理地址
data=use_proxy(proxy_addr,”http://www.baidu.com“)
print(len(data))
如果抛出urllib.error.URLError: 的异常,一般是代理地址太慢或者已经失效的问题,可以更换代理ip地址解决。
requests设置代理的方法更简单,post方法也是一样。
import requests
proxies = {
‘http’: ‘http://61.176.223.7:58822’
} #代理地址
r = requests.get(“http://www.baidu.com“, proxies=proxies)
print(r.headers)
注:若代理需要使用HTTP Basic Auth,可以使用 http://user:password@host/语法:
proxies = { “http”: “http://user:pass@10.10.1.10:3128/“, }
由于免费的代理服务器地址都是不稳定的,很多都不能用或者不稳定,或者很快就失效了,所以如果有钱还是可以用付费代理ip地址会比较稳定啦。建议还是用requests方式进行请求,相对urllib的方法,比较方便。
,