当前位置:主页 > 查看内容

KNIME网络爬虫

发布时间:2021-05-14 00:00| 位朋友查看

简介:URL URL是Uniform Resource Locator的简称是Internet上用于指定数据位置的表示方法。这些数据可以是图像、文件、视频、音频、超链接等。可以认为URL是数据在Internet上的存取路径一个URL对应一个数据资源。例如链家网的一个URL是https://sh.lianjia.com/ersh……

URL

URL是Uniform Resource Locator的简称,是Internet上用于指定数据位置的表示方法。这些数据可以是图像、文件、视频、音频、超链接等。可以认为URL是数据在Internet上的存取路径,一个URL对应一个数据资源。例如:链家网的一个URL是https://sh.lianjia.com/ershoufang/107103462926.html,用浏览器的HTTP协议发送后从Internet上获得响应如图所示,也就是打开了网页。
在这里插入图片描述
可以看到这个URL指向的是一个HTML文件。HTML全称是HyperText Markup Language,中文叫超文本标记语言,是一种标记网页上各种数据位置的描述语言,上述链家URL的HTML文件如图所示。可以看到网页上各种数据的位置都放在了标签对(即尖括号)中。
在这里插入图片描述
有时发送的URL请求,也可能获得如图所示的出错响应。
在这里插入图片描述
常见的URL请求响应状态如表所示,响应除了有HTML文件外,还会有JSON数据、二进制数据等。
在这里插入图片描述

网络爬虫

网络爬虫爬取的对象就是网页数据,根据方式的不同网页数据可以分为三种:

  1. 网站(website)
    这是网络爬虫最主要的获取数据对像。国内可以爬取的网站有新闻类(如:环球网、凤凰网、腾讯网)、社交类(如:新浪微博、人人网、水木社区)、购物类(如:淘宝、天猫、京东、拼多多)等。
  2. 网站的API
    API是Application Programming Interface的缩写,即应用程序的接口,是不同程序模块进行交互的地方。现在,API也是许多互联网公司提供的信息服务接口,是一种接口服务产品,例如提供天气类API的和风天气、提供微博类API的微博开放平台
  3. 流量数据
    流量数据是指用户访问网络产品或网页时产生的数据。流量数据有页面浏览量(Page View,简称PV)、访客数(Unique Visitor,简称UV)、登录时间、在线时长、人均流量、人均浏览时长等。

网络爬虫的流程

  1. 获取数据
    网络爬虫根据提供的URL队列,向服务器发起请求(Request),服务器接收请求后响应(Response),并返回网页数据。
  2. 解析数据
    网络爬虫把返回的网页数据解析成对应的HTML。
  3. 提取数据
    网络爬虫利用正则表达式或第三方库(如Scrapy、grab、PySpider)从HTML中提取出需要的数据。
  4. 存储数据
    网络爬虫把提取出的数据保存起来,便于日后使用和分析。
    网络爬虫搜索资源的策略主要有IP地址搜索策略、深度优先搜索策略和宽度优先搜索策略。

正则表达式解析网页

所谓解析网页就是从网页服务器返回的信息中提取想要数据的过程。常见的方式是使用正则表达式或者一些第三方开发正则表达式软件库,例如lxml、BeauifulSoup、requests-html等。这里使用名为lxml(https://lxml.de/)的正则表达式相关软件库中的XPath方式进行网页解析。XPath中有些特殊用途的表达式说明如表所示。
在这里插入图片描述

正则表达式爬取数据

  1. 安装URL解析包Palladian,安装手册在这里。Palladian包的全名为Palladian for KNIME (2.4.1.202103282119 Version)。
    在这里插入图片描述

  2. 在Table Creator节点中设置初始的URL,例如斗鱼。并双击列头,命名为url。
    在这里插入图片描述

  3. 在HTTP Retriever节点中获取URL,通过右击HTTP Result Output进行查看。
    在这里插入图片描述

  4. 用HTML Parser节点进行语法分析,转换为XML格式。
    在这里插入图片描述

  5. 在XPath节点中设置如下,解析出游戏主页网址(href)和游戏名称(title),在XML文件的489行附近。
    在这里插入图片描述
    在这里插入图片描述
    结果显示
    在这里插入图片描述

  6. 使用Column Filter节点只保留游戏主页网址(href)和游戏名称(title)列。
    在这里插入图片描述

  7. 使用Regex Split节点用正则表达式获取游戏名称的缩写,例如英雄联盟的缩写为LOL。
    在这里插入图片描述
    执行后,有一个WARN:1 input string(s) did not match the pattern or contained more groups than expected,:为什么?怎么解决?

  8. 使用Row Filter过滤不需要分析的游戏名称,只保留需要数据分析的游戏名称,例如LOL
    在这里插入图片描述

  9. 使用Table Creator节点,设置爬取的斗鱼聊天室的网页数,并且命名列变量名为pages。
    在这里插入图片描述

  10. 使用Constant Value Column节点设置斗鱼聊天室URL,注意其中的pages就是Table Creator节点中命名的变量。并且将聊天室的URL以roomURL的变量名追加到数据集中。
    在这里插入图片描述

  11. 使用String Mnipulation节点将Pages和roomURL两个变量拼接起来。
    在这里插入图片描述
    输出结果如下:
    在这里插入图片描述

  12. 使用Cross Joiner节点,将步骤8和步骤11的2个输出结果交叉式地拼接起来,执行后结果如下。
    在这里插入图片描述

  13. 使用String Manipulation节点将roomURL(聊天室URL)和split_0(游戏名称缩写)连接起来。
    在这里插入图片描述
    执行后的结果如下:
    在这里插入图片描述

  14. 使用GET Request对获取的10页(Pages)游戏聊天内容进行爬取。
    在这里插入图片描述
    并在Request Headers页设置User-Agent为Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36,以模拟浏览器(如Chrome)访问网站。
    在这里插入图片描述
    执行后GET Request节点,可以查看爬取的数据。
    在这里插入图片描述

  15. 使用Column To XML节点,将{JSON}body列转换为XML类型的列。
    在这里插入图片描述

  16. 使用JSON Path节点,解析出聊天室编号roomID、聊天室名称roomNames、在线人数hotSpots、主播网名nickNames。
    在这里插入图片描述
    执行后的结果为:
    在这里插入图片描述

  17. 使用Ungroup节点将组合的数据分解开。
    在这里插入图片描述
    执行后的结果为:
    在这里插入图片描述

  18. 使用Excel Writer节点保存数据。完!

;原文链接:https://blog.csdn.net/miles_ye/article/details/115334270
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!
上一篇:CCF系列题解--2016年12月第二题 工资计算 下一篇:没有了

推荐图文


随机推荐