点击阅读原文进入 【VSRC征稿】宅家副业攻略请查收!
【VSRC唯科普】远程采集(14/14篇)
鸣 谢
VSRC感谢业界小伙伴——Mils 投稿精品科普类文章。VSRC欢迎精品原创类文章投稿,优秀文章一旦采纳发布,将有好礼相送,我们已为您准备好了丰富的奖品!
(活动最终解释权归VSRC所有)
到现在为止,我们已经在自己本地的电脑上通过命令行,运行了所有唯科普中的Python程序,本次的唯科普我们将介绍让程序在不同的机器上运行,或者在本地电脑上用不同的IP运行的方法。
01
使用Python设置IP代理
一般的,网站会对其内容进行保护,而采取某些策略来阻止自动化程序或脚本的数据采集,这些策略的重点通常会放在识别人类与机器人的行为差异上,大多数则会直接采用封杀IP地址的来阻止自动化的数据读取,但是大范围的IP地址封禁也容易存在引起对正常业务的误拦截的情况,但是即便如此,封杀IP地址依然是一种十分常见的防护手段,可以有效阻止可疑网络爬虫对服务器的入侵。 使用不同的IP地址或使用远程的IP地址可以有效避免IP地址被封禁的问题。以下示例演示的是一个简易的设置代理IP的方式:
from bs4 import BeautifulSoup
import requests
import random
def get_ip_list(url, headers):
web_data = requests.get(url, headers=headers)
soup = BeautifulSoup(web_data.text, 'lxml')
ips = soup.find_all('tr')
ip_list = []
for i in range(1, len(ips)):
ip_info = ips[i]
tds = ip_info.find_all('td')
ip_list.append(tds[1].text + ':' + tds[2].text)
return ip_list
def get_random_ip(ip_list):
proxy_list = []
for ip in ip_list:
proxy_list.append('http://' + ip)
proxy_ip = random.choice(proxy_list)
proxies = {'http': proxy_ip}
return proxies
if __name__ == '__main__':
url = 'http://www.xicidaili.com/nn/'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36'
}
ip_list = get_ip_list(url, headers=headers)
proxies = get_random_ip(ip_list)
print(proxies)
(1)其中get_ip_list(url, headers)传入url和headers,最后返回一个IP列表,列表的元素类似{IP:PORT}格式,这个列表包括国内髙匿代理IP网站首页所有IP地址和端口,如图所示:
(2)函数get_random_ip(ip_list)传入第一个函数得到的列表,返回一个随机的proxies,这个proxies可以传入到requests的get方法中,这样就可以做到每次运行都使用不同的IP访问被爬取的网站,有效地避免了真实IP被封的风险。proxies的格式是一个字典:{'http': 'http://114.99.54.65:8118'}
02
使用PySocks模块设置代理通信
PySocks是一个非常简单的Python代理服务器通信模块,是一个基于Python的SOCKS代理客户端。Socks是一种代理服务,可以简单地将一端的系统连接到另外一端,支持多种协议,包括http、ftp请求及其它类型的请求。它分socks 4 和socks 5两种类型,socks 4只支持TCP协议而socks 5支持TCP/UDP协议,还支持各种身份验证机制等协议,其标准端口为1080。PySocks模块的使用示例如下:
import socks
import socket
from urllib.request import urlopen
url = 'http://www.xicidaili.com/nn/'
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "localhost", 9999)
socket.socket = socks.socksocket
print(urlopen(url).read())
网络一直在不断变化,其背后的技术也在不断升级和改进。在使用自动化技术采集互联网数据的同时,很少遇到完全无法解决的问题,只需要记住一点:互联网其实就是一个用户界面不太友好的超级API。
作为一名知识的搬运工,搬运途中多多少少遇到了不少BUG,唯科普的每一行代码,都有相应运行截图以及说明,希望VSRC的每一名读者,从中都能有所收获。
03
参考资料
1、http://cn.python-requests.org/zh_CN/latest/
2、https://www.python.org/dev/peps/
3、《Web Scraping with Python》
4、https://blog.csdn.net/lammonpeter/article/details/52917264
唯科普 | 《数据采集》目录
A.K.A "小白终结者"系列
第14篇、远程采集
。
。
精彩原创文章投稿有惊喜!
VSRC欢迎精品原创类文章投稿,优秀文章一旦采纳发布,将为您准备的丰富奖金税后1000元现金或等值礼品,上不封顶!如若是安全文章连载,奖金更加丰厚,税后10000元或等值礼品,上不封顶!还可领取精美礼品!可点击“阅读原文”了解规则。(最终奖励以文章质量为准。活动最终解释权归VSRC所有)
不知道,大家都喜欢阅读哪些类型的信息安全文章?
不知道,大家都希望我们更新关于哪些主题的干货?
现在起,只要您有任何想法或建议,欢迎直接回复本公众号留言!
精彩留言互动的热心用户,将有机会获得VSRC赠送的精美奖品一份!
同时,我们也会根据大家反馈的建议,选取热门话题,进行原创发布!
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
随时掌握互联网精彩
- 1 老百姓的事情是最重要的事情 7945608
- 2 多省否认花一万亿推平黄土高原 7916978
- 3 央视蛇年春晚分会场确定 7846937
- 4 数说2024中国经济脉动 7721054
- 5 13.2万瓶“特供酒”销毁 7645343
- 6 中国籍两兄弟在日本偷走3200颗包菜 7534872
- 7 近9000亿美元!拜登签了 7488874
- 8 网红羊毛月被禁止关注 7393198
- 9 充绒量仅3克 波司登客服回应 7291614
- 10 景区回应李现在虎跳峡举国旗 7144677