建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块
1509134n112vfmylfsipwv.jpg 【乘风破浪赋能学习季】2020华为云AI实战营,华为专家带你免费学AI! 2020年华为云AI实战营 华为云普惠AI
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消

胡琦

发帖: 37粉丝: 9

级别 : 中级会员

发消息 + 关注

发表于2020年06月10日 18:18:21 531 2
直达本楼层的链接
楼主
显示全部楼层
[AI实战营] 【手摸手学ModelArts】AI小白的第一行爬虫代码献给华为云博客

> 本文是纯代码篇,不会涉及任何理论,翔一样的代码,求大佬指导鞭策! 首先一个需求来了,【2020华为AI训练营】要我们提交个人的博客标题和链接,作为懒人的我,不想一个一个去copy,于是想到了爬虫。首先声明一下,我没有Python基础,从代码中就能看出来,不过干了4年前端,对页面的结构还算了解,通过查找一些代码,终于花了3个小时,完成了这个残次品。代码仅供学习用,请勿触碰红线。也请各位大佬多多指教! ``` # 引入网络请求库 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() ``` 如果ModelArts的notebook中没有**beautifulsoup4**这个依赖,可手动安装: ``` !pip install beautifulsoup4 ``` ## 结果预览 ![胡琦.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202006/10/181716ukarjnjw7cffupg3.png)
举报
分享

分享文章到朋友圈

分享文章到微博

AI学习者

发帖: 37粉丝: 1

级别 : 注册会员

发消息 + 关注

发表于2020年06月10日 18:48:54
直达本楼层的链接
沙发
显示全部楼层

学习了

点赞 评论 引用 举报

极客潇

发帖: 261粉丝: 18

级别 : 外部版主

发消息 + 关注

发表于2020年06月11日 09:48:34
直达本楼层的链接
板凳
显示全部楼层

最喜欢这种干货贴

点赞 评论 引用 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册