Python3.6 爬虫初体验--urllib、beautifulsoup(一)

经常查询IP地址相关,有时目标太多需要批量操作,于是想到python爬虫,批量查询、模式输出,废话不多说,代码奉上!
p.s. 涉及到的两个主要模块–urllib、BeautifulSoup
p.s. 本文主要介绍以上两模块使用,故涉及到的IP查询网站就用www.URL.com代替了

import urllib.request                              #python3.6中url请求模块只能用这种方式导入,其他方式亲测失败。。。
from bs4 import BeautifulSoup                          #同上,python3.6中的beautifulsoup导入方式,其他方式亲测失败。。。
import re
import time
with open('ipresult.txt','w') as out:                  #创建并打开结果存储文本
    with open('ipurl.txt','r') as list:                #打开已经存在的需查询域名文本
        for data in list:                              #以下为打印出所查询域名以及分割线
            print('-'*50,file=out)
            print("网站域名",data,file=out)
            url="http://www.URL.com/"                 #查询请求网址
            full_url=url+data                           #构造每个域名的查询url
            data=urllib.request.urlopen(full_url).read()   #发起请求并读取回应
            data=data.decode('UTF-8')
            soup = BeautifulSoup(data,"html.parser")       #使用beautifulsoup分析回应
            #time.sleep(20)
#以下为抓取回的页面中涉及ip地址及物理位置的html内容,根据其中的标签及class提取出想要的内容          
"""  

域名/IP 获取的IP地址 数字地址 IP的物理位置

www.hXXXXX.com 45.120.XX.XX 7628XXXXXX IANA 保留地址

"""
for link in soup.find_all('span'): #此for循环为通过匹配html标签“span”,大体定位ip地址 text_span = link.get_text() ip_finder = re.compile(r'(\d{1,3}\.){3}\d{1,3}') #此处正则匹配ip地址 ip = ip_finder.search(text_span) if ip : print("IP地址为:",ip.group(),file=out) #正则导出ip地址内容 lo_finder = link.get('class') #使用lo_finder代表从span标签中提取出全部class标签 lo_class = ['Whwtdhalf', 'w50-0'] #观察以上html发现标记物理位置的class为class="Whwtdhalf w50-0",与其他class明显不同,故作if判断进一步提取,但是此时还有(IP的物理位置)这一文本内容也是此class if lo_finder == lo_class: lo_text = link.get_text() #print(lo_text) if lo_text != 'IP的物理位置': #排除相同class标签的另一文本内容(IP的物理位置),即可提取出想要的物理位置 print("服务器位于",lo_text,file=out) #lo_patten = re.compile(r'') #lo = lo_patten.match(lo_text) #if lo : # print("服务器位于",lo.group(),file=out) #print(lo,file=out) print('-'*50,file=out) print("运行结束")

输出结果示例如下(为保护隐私有关信息用”X”代替):

--------------------------------------------------
网站域名 www.hXXXXX.com
IP地址为: 103.56.XX.XX
服务器位于 亚太地区  
--------------------------------------------------
网站域名 www.hXXXXX.com
IP地址为: 45.127.XX.XX
服务器位于 IANA 保留地址
--------------------------------------------------
网站域名 www.hXXXXXX.com
IP地址为: 124.248.XX.XX
服务器位于 香港 XXX(SunnXXXXXX)数据中心(XXXXXXX)
--------------------------------------------------
网站域名 www.hXXXXXXX.com
IP地址为: 42.123.XX.XX
服务器位于 贵州省贵阳市  
--------------------------------------------------
网站域名 www.hXXXXXX.com
IP地址为: 119.28.XX.XX
服务器位于 香港 北京XXXXXXX有限责任公司

你可能感兴趣的:(Python小结)