当前位置:   article > 正文

1+x 2020年数据采集证书(中级)实操试卷一_1+x编程题每一行存放一个href值

1+x编程题每一行存放一个href值

1+x 2020年数据采集证书(中级)实操试卷一

采集工具运用题

#一、数据采集任务场景一(工具定制题) 使用 apache httpd、filebeat、logstash、csv完成数据采集演示。 ## 1、数据场景: ### apache httpd: 运行目录:/app/httpd/ ### filebeat 安装路径:/bigData/tools/filebeat/ 配置文件:/bigData/tools/filebeat/filebeat.yml ### logstash 安装路径:/bigData/tools/logstash/ 配置文件:/bigData/tools/logstash/config/logstash-filebeat-csv.conf

题目要求:

## 2、采集要求 1)apache httpd的配置文件修改 1.1)找到apache httpd配置文件 1.2)根据apache httpd配置文件找到access日志文件。 1.3)修改apache httpd配置文件中的apache端口为8097,然后重启apache。 1.4)通过火狐浏览器直接访问apache服务,产生新的日志数据。 2)在filebeat里配置采集的apache httpd的access日志文件路径 3)使用采集工具(filebeat)收集apache httpd的access日志数据 4)通过filebeat输出到logstash,在logstash里收集信息,通讯端口是5044。 5)通过logstash使用 HTTPD_COMMONLOG 正则规则拆分日志数据。 6)通过logstash输出到csv文件中(/home/output/httpd-outfile.csv)。 7)httpd-outfile.csv内容说明:包含"timestamp" ,"verb", "httpversion"这三个属性信息,用4个空格分隔。 ## 3、提交的内容 1)filebeat的配置文件 2)logstash的配置文件 3)csv结果文件

1)filebeat的配置文件

  1. filebeat.inputs:
  2. - type: log
  3.   # to do   
  4. enabled: true
  5.   # to do  
  6. paths:   
  7.  - /app/httpd/logs/access_log
  8. filebeat.config.modules: 
  9.   path: ${path.config}/modules.d/*.yml
  10.   reload.enabled: false 
  11. setup.template.settings:
  12.   index.number_of_shards: 3
  13. setup.kibana:
  14. output.logstash:
  15.   # to do The Logstash hosts 
  16.  hosts: ["localhost:5044"]
  17. processors:  
  18. - add_host_metadata: ~
  19.  - add_cloud_metadata: ~

评分标准

2)logstash的配置文件

  1. # Sample Logstash configuration for creating a simple# Beats -> Logstash -> Elasticsearch pipeline.
  2. input {    # to do
  3.     beats {
  4.     port => 5044
  5.   }}filter {     # to do
  6.   grok {
  7.     match => { "message" => "%{HTTPD_COMMONLOG}" }
  8. }}output {
  9. csv {
  10. path => "/home/output/httpd-outfile.csv"
  11. fields => ["timestamp" ,"verb", "httpversion"]
  12. csv_options => {"col_sep" => "    "}
  13. }
  14.     stdout{
  15.         codec => rubydebug #格式化
  16.     }
  17.     }  

评分标准

25分

 3)csv结果文件

"27/Jul/2020:15:52:47 +0800"    GET    1.1  

评分标准

采集结果:15 分. 采集结果文件中至少包含一条数据。数据内容参考如下: "27/Jul/2020:15:30:47 +0800" GET 1.1 这一条数据中的三个数据项值分别是5分。 第一个数据是时间,时间要包含 27/Jul/2020 这个关键数据。 第二个数据是请求方法值。可以是GET、POST、PUT、DELETE等其中一个。 第三个数据是HTTP版本号。值可以是 1.1 。

编程题

题目说明:

# 一、数据采集任务场景一(编程开发) ## 1、数据场景: ### 采集网站 http://117.73.11.244:9090/ ### chrome浏览器启动 启动chrome:/opt/google/chrome/google-chrome --no-sandbox ### python开发工具启动 启动pycharm:/home/pycharm-community-2020.1.1/bin/pycharm.sh ### 工程目录说明 工程目录是:/root/PycharmProjects/crawler ### 编程文件 代码文件路径: /root/PycharmProjects/crawler/src/webcrawler.py

题目要求:

  1. 采集要求 1)使用python采集一个指定网站的首页。 2) 对获取到的响应网页内容进行冗余数据剔除。 2.1)使用正则去掉网页中的<script>元素及其包含的内容。 2.2)使用正则去掉网页中的<style>元素及其包含的内容。 3)采集目标:对于id值是"head_nav_list"的<ul>元素,获取其所有子元素<li>里的下级元素<a>中的href属性值 4)将结果存放到csv格式的文件里。结果文件路径:/home/output/crawler_result.csv 5)结果文件的要求:每一行存放 一个 href 值。 6)必须要有异常捕捉处理。 ## 3、提交的内容 1)代码文件:webcrawler.py 2)采集结果:crawler_result.csv

1)代码文件:webcrawler.py

  1. #!/usr/bin/env python# -*- coding: utf-8 -*-
  2. import time
  3. import urllib, time, os, base64, json
  4. import re, sys
  5. import urllib
  6. from lxml import etree
  7. import requests #对获取到的响应网页内容进行冗余数据剔除。
  8. def getPage(base_url):
  9.     try:
  10.         page = urllib.request.urlopen(base_url)  # 5
  11.         content = page.read().decode("utf-8", "ignore").lower()  
  12.                
  13.         re_script=re.compile('<\s*script[\S\s]*<\s*/\s*script\s*>',re.I) #Script     [\\S\\s]+?使用正则去掉网页中的<script>元素及其包含的内容。
  14.         re_style=re.compile('<\s*style[^>]*>[^<]*<\s*/\s*style\s*>',re.I) #style使用正则去掉网页中的<style>元素及其包含的内容。
  15.         content=re_script.sub('',content) #去掉SCRIPT
  16.         content=re_style.sub('',content)#去掉style
  17.         selector = etree.HTML(content.encode("utf-8",'ignore'))
  18.         # answer one
  19.         # menu_items = selector.xpath("/html/body/header/div/ul[@id='head_nav_list']/li/a") # 5
  20.         # for item in menu_items:
  21.         #     writefile("/home/output/crawler_result.csv", item.attrib.get("href")) # 2
  22.         # answer two
  23.         menu_items = selector.xpath("/html/body/header/div/ul[@id='head_nav_list']/li/a/@href")  # 5
  24.         for item in menu_items:
  25.             writefile("/home/output/crawler_result.csv", item)  # 2
  26.     except Exception as e:  # 3
  27.         print("Failed to read from %s." % base_url)
  28.         print(sys.exc_info())
  29.         return False
  30. def writefile(filename, content):
  31.     try:
  32.         fp = open(filename, 'a') # 5
  33.         fp.write(content + "\n") # 5
  34.         fp.close()  # 5
  35.     except:
  36.         return False
  37. now = time.strftime('%Y-%m-%d %X', time.localtime(time.time()))
  38. try:
  39.     # 5
  40.     url = 'http://117.73.9.229:9090/'
  41.     getPage(url)
  42. except Exception as e:
  43.     info = '%s\nError: %s' % (now, e)
  44.     writefile('Error.log', info)
  45.     print (info)
  46.     time.sleep(1)

评分标准

35分

2)采集结果:crawler_result.csv

  1. /
  2. http://www.inspuredu.com/sysConfigItem/showList
  3. http://www.inspuredu.com/classPackage/findAll
  4. http://www.moe.gov.cn/jyb_xwfb/s271/201904/t20190416_378207.html
  5. http://www.inspuredu.com/sysNews/list.html
  6. http://www.inspuredu.com/tikuIndex/toIndex
  7. http://www.inspuredu.com/question/comQuestionIndex

评分标准

15分

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/803971
推荐阅读
相关标签
  

闽ICP备14008679号