【Copy攻城狮日志】AI小白的第一行爬虫代码献给华为云博客

智数破浪人
• 阅读 2009
本文是纯代码篇,不会涉及任何理论,翔一样的代码,求大佬指导鞭策!

首先一个需求来了,【2020华为云AI训练营】要我们提交个人博客标题和链接的统计,作为懒人的我,不想一个一个去copy,于是想到了爬虫。首先声明一下,我没有Python基础,从代码中就能看出来,不过干了4年前端,对页面的结构还算了解,通过查找一些代码,终于花了3个小时,完成了这个残次品。代码仅供学习用,请勿触碰红线。也请各位大佬多多指教!
安装依赖库

pip install BeautifulSoup

全部代码:


# 引入网络请求库
from urllib import request
# 引入base4库
import base64
# 导入html解析库并取别名为bs
from bs4 import BeautifulSoup as bs

class HuaweiCloud:
    '获取某个人的华为云博客文章'
    # 用户搜索入口
    baseUrl = 'https://huaweicloud.com'
    # 博客列表入口
    url = ''
    # 文章列表
    allArticle = ''
    # 标志位,0-搜索用户,1-搜索文章
    flag = 0
    def __init__(self, name):
        self.name = name
        print(name)

    # 转码
    def encode(self):
        encoded = base64.b64encode(('%'+self.name+'%').encode())
        encoded = str(encoded,encoding = "utf-8")
        print(encoded)
        return encoded

    # 搜索
    def doSearch(self):
        # 首先执行用户搜索,获取用户ID(博客用户)
        if self.flag == 0:
            self.url = self.baseUrl + '/s/' + self.encode()

        # 添加UA标识讲这个爬虫程序伪装成浏览器访问
        user_agent = "User-Agent"
        user_agent_value = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36"
        print(self.url)
        # 发起网络请求,获取到返回的html
        resp = request.Request(self.url)
        # 模拟浏览器
        resp.add_header(user_agent, user_agent_value)
        resp = request.urlopen(resp)
        # 网页返回的数据
        htmlCode = resp.read().decode("utf-8")
        # print(htmlCode)

        # 格式化html(htmlCode就是上面我们请求到的数据)
        soup = bs(htmlCode, "html.parser")
        # 输出格式化好的html内容
        # print(soup.prettify())

        # 这是第一步,在主站搜索用户,默认取的第一个
        if self.flag == 0:
            userList = soup.find_all("li", {"class", "user-classify"})
            user= userList[0].find_all("a")
            # 取第一个用户的博客地址
            self.url = user[0].get("href")
            print(user[0].get("href"))
            # 执行第二步
            self.flag = 1
            self.doSearch()

        # 第二步获取文章
        if self.flag == 1:
            blogList = soup.find_all("a", {"class", "common-blog-title"})
            print(blogList)
            for article in blogList:
                url = article.get("href")
                title= article.get("title")
                if url and title:
                    testUrl = 'https://bbs.huaweicloud.com'+url
                    article = title + testUrl
                    self.allArticle += article +'\n'    
            print(self.allArticle)
            return(self.allArticle)

t = HuaweiCloud('胡琦')
t.doSearch()

本次实践借助AI开发平台ModelArts完成,结果预览:
【Copy攻城狮日志】AI小白的第一行爬虫代码献给华为云博客

【手摸手学ModelArts】AI小白的第一行爬虫代码献给华为云博客 https://bbs.huaweicloud.com/b...
【2020华为云AI实战营】物体检测作业分享 https://bbs.huaweicloud.com/b...
【华为云-上云之路】CloudIDE实战AI换脸 https://bbs.huaweicloud.com/b...
【手摸手学ModelArts】两行命令获取ModelArts正版实战教程 https://bbs.huaweicloud.com/b...
【手摸手学ModelArts】传说中的“云毕业照“,先睹为快! https://bbs.huaweicloud.com/b...
【手摸手学ModelArts】零代码轻松实现图像分类 https://bbs.huaweicloud.com/b...

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
4年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Peter20 Peter20
4年前
mysql中like用法
like的通配符有两种%(百分号):代表零个、一个或者多个字符。\(下划线):代表一个数字或者字符。1\.name以"李"开头wherenamelike'李%'2\.name中包含"云",“云”可以在任何位置wherenamelike'%云%'3\.第二个和第三个字符是0的值wheresalarylike'\00%'4\
Wesley13 Wesley13
3年前
Java爬虫之JSoup使用教程
title:Java爬虫之JSoup使用教程date:201812248:00:000800update:201812248:00:000800author:mecover:https://imgblog.csdnimg.cn/20181224144920712(https://www.oschin
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
2020最佳AI新基建年度榜:九号公司荣获最佳机器人智能驾驶奖
!(https://articlefd.zolimg.com.cn/t_s640x2000/g6/M00/03/05/ChMkKl_QoFIWaCXAACo22TWRIcAAGfwwPRa0oAAKjz972.jpg)2020年是新基建元年,AI、5G、大数据、新能源等成为新基建的关键词。近日雷锋网正式公布【2020最佳AI新基建年度榜】,该榜
Stella981 Stella981
3年前
Dubbo爆出严重漏洞!可导致网站被控制、数据泄露!附解决方案
http://dy.163.com/v2/article/detail/F5FPIFRU0511Q1AF.html  !(http://dingyue.ws.126.net/2020/0216/125ec4c4p00q5rcrs0019d200ig009qg00ig009q.png)  来源:华为云  原文地址:https://w
Stella981 Stella981
3年前
AI 科学家带你快速 Get 人工智能最热技术
!(https://pic3.zhimg.com/80/v2af9f6637b50b09be60b00a42f3812d5e_1440w.jpg)日前,京东智联云与贪心学院联合举办的人工智能前沿技
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
5个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
智数破浪人
智数破浪人
Lv1
我昨天不太开心,今天一定努力。
文章
3
粉丝
0
获赞
0