【从零开始学爬虫】采集全国航班信息

2024-06-02 01:18

本文主要是介绍【从零开始学爬虫】采集全国航班信息,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

l 采集网站

【场景描述】采集全国航班信息。

【入口网址】http://www.esk365.com/tools/gnhb/

图片

【采集内容】采集全国航班的航班号,起点、终点。

图片

l 思路分析

配置思路概览:

图片

l 配置步骤

一.新建采集任务

选择【采集配置】,点击任务列表右上方【+】号可新建采集任务,将采集入口地址填写在【采集地址】框中,【任务名称】自定义即可,点击下一步。

 

图片

图片

二.链接抽取

1.列表链接需要脚本配置,操作如下图所示:

图片

2.查看页面源码,打开浏览器中该页面,点击F12,点击指针按钮,如下图所示,用指针按钮选中所需要的地点链接,这时在右侧出现对应源码内容。观察发现所需要的地点链接,在class为【p_l2】的节点后的class为【wq ws】的节点下的class为【fa_wk3】的节点中。

图片

3.根据以上思路,具体配置脚本如下,配置好脚本后点击右上角【保存】。

图片

脚本文本如下:

var foor = DOM.FindClass("p_l2","div");//定义foor为class为【p_l2】的节点
var foora=DOM.FindClass("wq ws","div",foor );//定义foora为在foor节点后class为【wq ws】的节点
var raw = foora.child.next;//定义raw为foora的子节点的下一个节点,即class为【lm_t】的节点
var foorb=DOM.FindClass("fa_wk3","div",raw  );//定义foorb为在raw节点下class为【fa_wk3】的节点
while(foorb)
{url link;//定义一个urlvar foorc=foorb.child;//定义foorc为foorb节点的子节点while(foorc){u=foorc.href;//定义u为foorc节点的href,即为地点对应的链接link.urlname=URL.StdUrl(URL.urlname,u);//返回链接为ulink.title = DOM.GetTextAll(foorc);//返回链接名称为foorc中所有的文本内容link.tmplid = 2;//关联模板2foorc=foorc.next;//foorc为foorc的下一个节点RESULT.AddLink(link);}foorb = foorb.next.next.next;//foorb为foorb的下一个的下一个的下一个节点,即下一个class为【fa_wk3】的节点
}

⑥采集预览如下所示:

图片

三. 数据抽取

1.链接抽取完成进入数据页,在模板02中,添加数据抽取,具体操作如下所示:

图片

2.此时要完成数据建表的工作:选择【数据建表】,点击【采集数据表结构】中的【+】,即可添加数据表,名称可以自定义,在此命名为房天下表单。

图片


3.数据表配置完成,选择【数据抽取】右侧数据属性配置,表单选择刚建立的数据表,则可看到表单中的字段在左侧显示。

图片

4.点击脚本窗口,选择数据抽取脚本

图片

5.观察所需字段在页面中的位置,浏览器打开任意一个地点分类的详情页,点击F12,点击指针按钮,如下图所示,用指针按钮选中所需要的字段信息,这时在右侧出现对应源码内容。

观察可发现,所需的航班数据就在class为【p_l2】后的class为【wq lq】的字节下的所有class为【li】的字节中。

图片

6.根据上述结构,数据抽取脚本如下所示:

图片

脚本文本如下:

var foor = DOM.FindClass("p_l2","div");//定义foor为class为【p_l2】的字节
var foora = foor.child.next;//定义foora为class为foor字节的子字节的下一个字节,即class为【wq lq】的字节
while(foora)
{var foorb =DOM.FindName("li",foora);//定义foorb为foora后idname为【li】的字节while(foorb){var li= DOM.GetTextAll(foorb);//定义li为foorb字节下所有的文本内容,即MU9040(阿尔山-北京)record re;re.num = li.Left("(");//返回num值为li“(”左边的值,即MU9040re.From_ = li.Middle("(","-");//返回From_值为li","和-"中间的值,即阿尔山re.to_ = li.Middle("-",")");//返回to_值为li"-"和,"中间的值,即北京RESULT.AddRec(re,this.schemaid);foorb=foorb.next;//foorb为foorb下一个节点}foora=foora.next.next.next;//foora为foora的下一个的下一个的下一个节点
}

7.以上完成全部字段配置,效果预览如下:

图片

 

四.采集数据

模板配置完成,采集预览没有问题后,可以进行数据采集。

1.新建采集数据表:

选择【数据建表】,点击【表单列表】中该模板的表单,在【关联数据表】中选择【创建】,表名称自定义,这里命名为hangban(注意命名不能用数字和特殊符号),点击【确定】。

图片

2.选择【数据采集】,勾选任务名称,点击【开始采集】,则正式开始采集。

图片

3.可以在【数据浏览】中,选择数据表查看采集数据,并可以导出数据。

图片

 

l 课后回顾

FindClass(class名,标签类型,开始查找结点):当符合条件的class名称唯一时,使用class名来查找结点。

FindName(标签名,开始查找结点):当查找范围内,符合条件的数据标签唯一时,可以使用标签名称查找标签结点。

GetTextAll(需要获取文本的结点,使用的字符编码):获取该html标签节点及所有子节点的可见文本。

Child:孩子频道节点。

Next:下一频道节点。

FindId(idVal):通过标签的ID属性值查找标签节点,其中idVal表示待查找标签ID属性值。

Left(分界字符):获得该字符串分解字符左侧所有内内容。

 

这篇关于【从零开始学爬虫】采集全国航班信息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1022632

相关文章

Python3 BeautifulSoup爬虫 POJ自动提交

POJ 提交代码采用Base64加密方式 import http.cookiejarimport loggingimport urllib.parseimport urllib.requestimport base64from bs4 import BeautifulSoupfrom submitcode import SubmitCodeclass SubmitPoj():de

生信代码入门:从零开始掌握生物信息学编程技能

少走弯路,高效分析;了解生信云,访问 【生信圆桌x生信专用云服务器】 : www.tebteb.cc 介绍 生物信息学是一个高度跨学科的领域,结合了生物学、计算机科学和统计学。随着高通量测序技术的发展,海量的生物数据需要通过编程来进行处理和分析。因此,掌握生信编程技能,成为每一个生物信息学研究者的必备能力。 生信代码入门,旨在帮助初学者从零开始学习生物信息学中的编程基础。通过学习常用

Python:豆瓣电影商业数据分析-爬取全数据【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】

**爬取豆瓣电影信息,分析近年电影行业的发展情况** 本文是完整的数据分析展现,代码有完整版,包含豆瓣电影爬取的具体方式【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】   最近MBA在学习《商业数据分析》,大实训作业给了数据要进行数据分析,所以先拿豆瓣电影练练手,网络上爬取豆瓣电影TOP250较多,但对于豆瓣电影全数据的爬取教程很少,所以我自己做一版。 目

Verybot之OpenCV应用一:安装与图像采集测试

在Verybot上安装OpenCV是很简单的,只需要执行:         sudo apt-get update         sudo apt-get install libopencv-dev         sudo apt-get install python-opencv         下面就对安装好的OpenCV进行一下测试,编写一个通过USB摄像头采

Golang 网络爬虫框架gocolly/colly(五)

gcocolly+goquery可以非常好地抓取HTML页面中的数据,但碰到页面是由Javascript动态生成时,用goquery就显得捉襟见肘了。解决方法有很多种: 一,最笨拙但有效的方法是字符串处理,go语言string底层对应字节数组,复制任何长度的字符串的开销都很低廉,搜索性能比较高; 二,利用正则表达式,要提取的数据往往有明显的特征,所以正则表达式写起来比较简单,不必非常严谨; 三,使

Golang网络爬虫框架gocolly/colly(四)

爬虫靠演技,表演得越像浏览器,抓取数据越容易,这是我多年爬虫经验的感悟。回顾下个人的爬虫经历,共分三个阶段:第一阶段,09年左右开始接触爬虫,那时由于项目需要,要访问各大国际社交网站,Facebook,myspace,filcker,youtube等等,国际上叫得上名字的社交网站都爬过,大部分网站提供restful api,有些功能没有api,就只能用http抓包工具分析协议,自己爬;国内的优酷、

Golang网络爬虫框架gocolly/colly(三)

熟悉了《Golang 网络爬虫框架gocolly/colly 一》和《Golang 网络爬虫框架gocolly/colly 二》之后就可以在网络上爬取大部分数据了。本文接下来将爬取中证指数有限公司提供的行业市盈率。(http://www.csindex.com.cn/zh-CN/downloads/industry-price-earnings-ratio) 定义数据结构体: type Zhj

014.Python爬虫系列_解析练习

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈 入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈 虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈 PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈 Oracle数据库教程:👉👉 Oracle数据库文章合集 👈👈 优

BIRT--商业智能和报表工具,从零开始

1.简介 BIRT (Business Intelligence and Reporting Tools), 是为 Web 应用程序开发的基于 Eclipse 的开源报表系统,特别之处在于它是以 Java 和 JavaEE 为基础。BIRT 有两个主要组件:基于 Eclipse 的报表设计器,以及部署到应用服务器上的运行时组件。 2.下载 官网下载网址:http://download.ec

urllib与requests爬虫简介

urllib与requests爬虫简介 – 潘登同学的爬虫笔记 文章目录 urllib与requests爬虫简介 -- 潘登同学的爬虫笔记第一个爬虫程序 urllib的基本使用Request对象的使用urllib发送get请求实战-喜马拉雅网站 urllib发送post请求 动态页面获取数据请求 SSL证书验证伪装自己的爬虫-请求头 urllib的底层原理伪装自己的爬虫-设置代理爬虫coo