Python 话说是一门面向监狱编程的语言,吾等不信,前来尝试。。。。
开玩笑了~
前一段时间刚接触 Python 的时候,觉得有些不适应,特别是语法显得别扭,后来发现它和golang还是挺像的
同样的包管理调用机制:
python:
同样也是包管理机制: import requests
yum install pip
pip install xxxx
友好一点直接上代码:代码中自带解析
值得一提的是Python的json数组处理真不方便 代码中有处理
import requests //是不是和 go使用 的import 引用包一样一样的
import datetime
import json
import sys
from bs4 import BeautifulSoup //爬虫最常用的包def excuteSpider(url,headers,session,): //封装的函数方式 别扭,特别是以对齐方式的语法req = session.get(url, headers=headers)bsObj = BeautifulSoup(req.text, 'html.parser')rankList = bsObj.findAll("div", {"class": "rank-index"})linkList = bsObj.findAll("span", {"class": "domain-link"})lranksub=[]llinksub=[]for rank in rankList:lranksub.append(rank.string.encode('utf-8').decode())for link in linkList:llinksub.append(link.a['href'].encode('utf-8').decode())return lranksub,llinksubif __name__=='__main__': //主函数lrank=[]llink=[] session = requests.Session()headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0","Accept": "*/*"} //构建头部 可以填更多的参数 模拟浏览器访问网址for i in range(1,2): //想要多少页?if i==1:url = "http://www.alexa.cn/siterank/" else:url = "http://www.alexa.cn/siterank/"+str(i) //下一页lranksub,llinksub=excuteSpider(url, headers, session)lrank+=lranksubllink+=llinksubjsontext = {"version":"1.0.0","domains":[]} //创建 json数据for i in range(len(lrank)):jsontext["domains"].append({"id":lrank[i], "domain":llink[i]}) //追加cur_dir = sys.path[0] //获取当前路径work_dir = cur_dir + '/../db/alexa-cn/' //到上一级路径 /../now = datetime.datetime.now()name = datetime.datetime.strftime(now,'%Y%m%d%H%M%S.json') //时间格式化chinazfilepath = work_dir+namewf = open(chinazfilepath, 'w')wf.write(json.dumps(jsontext,indent=4,ensure_ascii=False)) //jso格式化输入文件wf.close()print('ok')
爬取结果: