分布式爬虫系统之访问频率与DNS解析|青训营笔记

304 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第 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秒一次(能不能达到想要的访问频率上限可能还是需要根据网速等因素)

四、小小的总结

美其名曰“分布式”爬虫系统的笔记到今天的第三篇还没有正式更新“分布式”的内容(目前还停留在满足基本的爬虫功能)实在是惭愧,加上这几天又发烧,雪山加霜了属于是。之后继续努力,争取给大家分享一些更有技术含量的内容吧。