这是我参与「第四届青训营 」笔记创作活动的第 21 天
一个大数据小白的自学成长之路 ( 三 ): 两个简单的小功能:DNS解析与访问频率
作为一个本科应用数学专业的大数据领域的萌新 , 可能没法像技术大牛一样有很多的技术产出 , 暂且就把我在做项目时的一些心得和所学作为笔记吧 !( 有些大白话写的不是很专业 , 大佬轻喷 )
一、简介
DNS解析就是将url解析成ip的形式(后续数据库可能会用到),访问频率则是控制爬虫访问要访问的对象的频率以降低使用过程中ip挂掉的风险,这两项功能比较基础,实现起来都相对简单。
二、涉及技术
DNS解析:python中引入socket的库;访问频率:在python中引入time的模块。
三、实践过程
没有太多的逻辑或者技术难点,基本上属于在大框架上添加一行代码就可以实现的功能,这里也就不废话直接上代码了:
DNS解析就是在引入socket的库之后在解析url的代码部分加上如下这行代码即可完成:
ip = socket.gethostbyname(url)
为了能够更高效地解析url,并且去除http和https两种协议的干扰,我写了如下的代码:
def URL_IP(project_link):
for oneurl in project_link:
if(str(oneurl.strip())[:8]=="https://"):
url = str(oneurl.strip())[8:]
print(url)
try:
ip = socket.gethostbyname(url)
print(ip)
except:
print("this URL 2 IP ERROR")
else:
url = str(oneurl.strip())[7:]
print(url)
try:
ip = socket.gethostbyname(url)
print(ip)
except:
print("this URL 2 IP ERROR")
访问频率则是在引入time模块之后在访问url的代码部分加上
time.sleep(10)
ps:()内为想要设定的秒数,访问频率实际上就是每秒访问的次数,那么如果我们如上限制了时间间隔为10秒的话,访问频率的上限也就是0.1秒一次(能不能达到想要的访问频率上限可能还是需要根据网速等因素)
四、小小的总结
美其名曰“分布式”爬虫系统的笔记到今天的第三篇还没有正式更新“分布式”的内容(目前还停留在满足基本的爬虫功能)实在是惭愧,加上这几天又发烧,雪山加霜了属于是。之后继续努力,争取给大家分享一些更有技术含量的内容吧。