Alexa网站排名爬取

本文介绍使用Python进行网页爬取的实战经验,详细展示了如何利用requests和BeautifulSoup库抓取alexa.cn网站的数据,并将结果存储为JSON格式。文章涵盖了Python语法、包管理、json处理及爬虫技巧。
摘要由CSDN通过智能技术生成

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,llinksub
    
if __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+=lranksub
        llink+=llinksub
        
    jsontext = {"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+name
    
    wf = open(chinazfilepath, 'w')
    wf.write(json.dumps(jsontext,indent=4,ensure_ascii=False))  //jso格式化输入文件
    wf.close()
    print('ok')
    

爬取结果:
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值