#化鲲为鹏,我有话说# 鲲鹏弹性云服务器运行网络爬虫(中)

举报
golang 发表于 2019/11/13 19:54:09 2019/11/13
【摘要】 零系统:ubuntu 18.04爬虫:pyspider服务器:鲲鹏弹性云KC1记录全部过程一 设置登录账号和密码创建 db.json 文件,用于设置登录账号和密码不要在 data 文件夹内创建 db.json,data 是 pyspider 第一次启动时创建的文件,保存着数据信息,所以最好每次运行都在 data 的父目录或者指定 data 目录位置,以保证旧数据存在。执行命令启动pyspi...

系统:ubuntu 18.04

爬虫:pyspider

服务器:鲲鹏弹性云KC1

记录全部过程


一  设置登录账号和密码

创建 db.json 文件,用于设置登录账号和密码

不要在 data 文件夹内创建 db.json,data 是 pyspider 第一次启动时创建的文件,保存着数据信息,所以最好每次运行都在 data 的父目录或者指定 data 目录位置,以保证旧数据存在。

20191113033013.png

20191113032834.png

执行命令启动

pyspider --config db.json all

在本地电脑,打开浏览器,输入服务器的ip地址:5000,即弹出登录对话框,输入之前设置的用户名和密码

20191113150634.png

二 创建第一个爬虫

简单的操作,见图

20191113150814.png

20191113150910.png

20191113151035.png

创建之后,自动生成基础代码,15 行横线处是待爬取的首页链接,19 行是查找详情页,也就是首页面的所有跳转链接,最后的方框则是返回的结果

三 实战

爬取网页:http://quotes.toscrape.com/

信息:名言内容,作者,标签

查看网页信息,每一句名言都是一个div,class=quote, 这里关键字是 quote

  @every(minutes=24 * 60)
   def on_start(self):
       self.crawl('http://quotes.toscrape.com/', callback=self.index_page)

   @config(age=10 * 24 * 60 * 60)
   def index_page(self, response):
       results = []
       for each in response.doc('.quote').items():
        pass

20191113151917.png

20191113152210.png

F12 查看元素,元素选择器(图片中红标1)选择作者名,在右边代码栏可见该标签,其它标签属性有 itemprop="author" ,以此类推

代码可以这样写

   # 名言结果集
  results = []
  # 循环每一句名言
       for each in response.doc('.quote').items():
           # 名言
           comment = each.find('[itemprop="text"]').text()
           # 作者
           author = each.find('[itemprop="author"]').text()
           # 标签
           tags = each.find('.tags .tag').items()
           # 标签结果集
           tagList = []
           for tag in tags:
               tagList.append(tag.text())
           
      # 将查询到名言封装到名言结果集
           results.append({
               "comment": comment,
               "author": author,
               "tagList": tagList
           })

20191113192838.png

结果

20191113194244.png

四 将结果存储到 MongoDB

如何在鲲鹏弹性云部署 MongoDB,见下链

https://bbs.huaweicloud.com/forum/thread-28769-1-1.html

1

安装 pymongo

pip3 install pymongo

2

爬虫代码:

# 导入
import pymongo
    # 连接 mongodb 数据库
   client = pymongo.MongoClient('119.3.248.122')
   # 库名为 demo1
   db = client['demo1']
    # 如果有结果集,调用存储数据库函数
   def on_result(self,result):
       if result:
           self.save_to_mongo(result)
           
   # 存到数据库        
   def save_to_mongo(self,result):
       if self.db['comment'].insert(result):
           print('saved to mongo',result)

20191113194804.png


预告: 本篇仅仅爬取一页数据,如何翻页呢?同时下篇将补充一些漏掉的细节,并贴出源码

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

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

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。