PHP提取8684公交数据

FISCO-BCOS配置及使用控制台 如果因为网络问题长时间无法下载,请尝试:curl -#LO https://gitee.com/FISCO-BCOS/console/raw/master-2.0/tools/download_console.sh && bash download_console.sh。为了可以更加方便快捷,所以HelloWorld合约已经被内置了,位于控制台下面的contracts/solidity/HelloWorld.sol。用于获取和设置name的值,合约代码如下。部署成功会返回合约地址。 阅读详情

最近一年来一直在使用fedora,发现linux真是太适合我了,喜欢写程序,自己瞎倒腾,唉windows误我大好年华……

用PHP写了一段程序用于提取网页中的数据,相信搜索引擎也是差不多的想法,只不过他们数据多,算法好些,呵呵

[php]

<?php
/*
*此文件的目标是自动搜集存储8684上的深圳市公交数据
*
*由于http获得的网页为gbk编码PHP需要转换,只能将PHP重新编译
*/

//载入simple_html_dom类分析HTML文件
include 'simple_html_dom.php';

//创建一个SQLite数据库用于存储数据
$db = new SQLite3 ('BusData.db');

if ($db) //数据库创建成功
{
//创建站点名表
$db->exec('CREATE TABLE stationName (id INTEGER PRIMARY KEY AUTOINCREMENT,sName STRING)');
//创建线路表sName,sNote,sTo,sFrom分别存储线路名,备注,去程,回程
$db->exec('CREATE TABLE Line (sName STRING, sNote STRING, sTo STRING, sFrom STRING)');
}

analysis($db, 'http://shenzhen.8684.cn/x_24f5dad9');

$db->close ();
echo "Congratulations! Write Sucessfully!";
//******************
//分析数据,插入数据部分
//******************

function analysis($db, $url)
{
$html = new simple_html_dom ();
$html->load_file ($url); //载入HTML文件,可以从本地,也可是URL

$LName = ''; //用于记录公交线路名称
foreach ($html->find ('div[id=show] h2 a') as $lineName)
{
// echo mb_strlen($lineName->plaintext).'word<p>';本来想去掉公交名称中的‘路'字,不过后来发现整个命名不标准,要去可能去的乱七八糟了
//记录公交路线名称
$LName = $LName.mb_strcut(mb_convert_encoding($lineName->plaintext,'UTF-8','gbk'),6);

}
//记录线路备注信息:
$note = '|';
foreach ($html->find ('div[id=show] li') as $Note)
$note = $note.mb_convert_encoding($Note->plaintext,'UTF-8','gbk').'|'; //将备注连接

$i = 0; //用以判断行程(去程/回程)
$s_To = '.'; //记录去程路线
$s_From = '.'; //记录回程路线

//输出公交站点信息
foreach ($html->find ('span') as $element)
{
$i++; //控制变量自增
//i为奇数时判断为去程
if ($i % 2)
{
foreach ($element->find ('a') as $stationName)
{
//查询第一个站点在数据库中是否存在,如果不存在,则插入当前站点
$s_Name = mb_convert_encoding($stationName->plaintext,'UTF-8','gbk'); //将字符转为utf-8编码,以免乱码
$sNameResult = $db->query('SELECT id FROM stationName WHERE sName=/''.$s_Name.'/'');

//判断数据库站点中没有当前站点 如果$sNameResult->fetchArray()返回false则说明数据库中没有站点信息
if (!$sNameResult->fetchArray ())
{
//插入站点名
//INTERT UPDAT DELETE 必须使用SQLite3::exec()方法,否则网页显示会有问题
$result = $db->exec('INSERT INTO stationName (sName) VALUES (/''.$s_Name.'/')');
// echo '新的站点名,可以插入数据库<br>';
$r = $db->query('SELECT id FROM stationName WHERE sName=/''.$s_Name.'/'');
//////////////////////////////////////////////////////////////////////
//此句子为什么会发生错误///////////////////////////////////////////////
// $s_To = $s_To.(($r->fetchArray(SQLITE_NUM))[0]);
/////////////////////////////////////////////////////////////////////////
// var_dump( $r->fetchArray(SQLITE_NUM));
//连接去程线路站点信息,以站点表中的ID进行存储
$temp = $r->fetchArray(SQLITE3_NUM);
$s_To = $s_To.$temp[0].'.';
// echo $s_To.'<br>';
}else{
$temp = $sNameResult->fetchArray(SQLITE3_NUM);
$s_To = $s_To.$temp.'.';
} //if结束
} //foreach结束
}else{
//i为偶数时判断为回程
foreach ($element->find ('a') as $stationName)
{
//查询第一个站点在数据库中是否存在,如果不存在,则插入当前站点
$s_Name = mb_convert_encoding($stationName->plaintext,'UTF-8','gbk');
$sResult = $db->query ('SELECT id FROM stationName WHERE sName=/''.$s_Name.'/'');

// echo '查询站点结果2:'.$s_Name.' '.$sResult->columnName (0).'<p>'; // var_dump($sResult->fetchArray()); //末查询到数据时为bool(false)

if (!$sResult->fetchArray ())
{
//如果站点名不存在于数据库中,则插入新的站点名
$result = $db->exec('INSERT INTO stationName (sName) VALUES (/''.$s_Name.'/')');
// echo '新的站点名,可以插入数据库<br>';
}
//////////////////////////////////////////////////////////////////////////
//在数据库中检索当前站点名获取其ID
//此方法自我感觉比较消耗时间,不知道有没有什么好的办法//////////////////////
///////////////////////////////////////////////////////////////////////////
$r = $db->query('SELECT id FROM stationName WHERE sName=/''.$s_Name.'/'');
$temp = $r->fetchArray(SQLITE3_NUM);
//连接回程线路站点信息,以站点表中的ID进行存储
$s_From = $s_From.$temp[0].'.';
} //foreach end
}// end if
} // end foreach

$sInsert = 'INSERT INTO Line (sName, sNote, sTo, sFrom) VALUES (/''.$LName.'/',/''.$note.'/',/''.$s_To.'/',/''.$s_From.'/')';

$db->exec($sInsert);
echo $LName.'<p>';
///////////////////////////////////////////////////////////////////////////////
//当前线路的数据获取完毕
//////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////
//下面开始搜索div[id=key]中数据,以此循环得到整个城市公交数据
/////////////////////////////////////////////////////////////////////////////
/* $keyName = new array();
$keyUrl = new array();
$i_A = 0;
*/
foreach ( $html->find('div[id=key] a') as $key)
{
// $keyArray[$i_A] = mb_convert_encoding($key->plaintext, 'UTF-8', 'gbk');
//时刻注意从网页中获取的数据编码问题
$aName = mb_convert_encoding($key->plaintext, 'UTF-8', 'gbk');
echo $aName.'<br>';
//查询当前线路名在数据库中是否存在,如果存在则返回
$sqlIn = 'SELECT sName From Line WHERE sName=/''.$aName.'/'';
$isNew = $db->query($sqlIn);

if ( $isNew->fetchArray() )
{
continue;
}else{
$key_url = 'http://shenzhen.8684.cn/'.mb_convert_encoding($key->href, 'UTF-8', 'gbk');
analysis($db, $key_url); //递归调用
}
} //end foreach

} //end function
?>

[/php]

 

其中simple_html_dom.php文件是一个用PHP写的开源解析器,相当好用

 

不过本程序有点问题,不知道为什么不能递归提取完全,深圳的数据大概提取40多条线路(约800多个站点)就完了,如果有人发现问题请指教,谢谢

SAP 创建PO时提示“不能确定任何组件” SAP 创建委外加工的PO时提示“不能确定任何组件” 而如果BOM已经创建了,但还是提示该错误保存。 解决办法:1. BOM selection 未配置好; 2. 由于Purchasing prosessing time的设置,如果PO中的delivery time - Purchasing prosessing time是过去的日期,那么会找不到BOM,BOM的有效期需早 于PO审批的有效期。 3. BOM未... 阅读详情

相关推荐

MaxEnt物种分布预测中的常见误区与优化技巧:如何提高模型准确率

本文深入探讨了MaxEnt物种分布预测模型从基础应用到精准预测的进阶实践。针对模型准确率提升,文章系统分析了环境变量筛选、模型参数调优、结果批判性解读等核心环节的常见误区,并提供了基于生态位模型原理的深度优化技巧,帮助研究者产出更可靠、可解释的预测结果。

weixin_29219539的博客 594

开发那点事(六)php抓取北京实时公交数据

开发背景 自己开发一款北京实时公交的小程序,奈何在网上苦苦寻找api接口无果,最后只得爬取网上数据 项目构思 1 选定爬虫框架—QueryList 2 数据源选定—北京公交网 3 根据需求将div格式化成json数据 开发实践 1 QueryList安装,利用composer直接进行安装,点我进官网查看示例 composer require jaeger/querylist 在控制器中引用 &l...

开发那点事 1648

浙政钉H5应用上架实战:从环境配置到发布避坑指南

本文详细解析浙政钉H5应用上架全流程,从环境配置到发布避坑指南。重点介绍Vue 2.6 + Node 14.21.3的稳定开发环境搭建、项目结构规范及常见报错解决方案,帮助开发者高效完成浙政钉H5应用上架流程。

weixin_27943395的博客 286

Android sqlite数据库简单使用(创建和插入,查询数据)

不能不说,数据库对我们软件有多重要了,在APP上我们Android 也提供了一个轻便型数据库,只有简单了解一下sql数据库的,应该都可以很方便上手。 第一步,我们新建 声明一个MediaSQLiteOpenHelper类去继承SQLiteOpenHelper类,我们在里面用到两个方法。 onCreate()和o...

qq_36771930的博客 5301

树莓派上基于ONNXRuntime与Qt的C++模型部署实战指南

本文详细介绍了在树莓派上使用ONNXRuntime与Qt进行C++模型部署的完整流程。从环境配置、依赖安装到交叉编译优化,再到Qt界面集成与ARM架构性能调优,提供了实战指南和常见问题解决方案,帮助开发者高效完成边缘设备上的AI应用部署。

ik6789012的博客 339

统信UOS V20 安装mysql5.7.42详细教程

到bin/下,执行下面的命令,初始化mysql服务信息,得到数据库的初始密码,实际如果目录不一样记得换成自己的目录。下载后通过远程将安装包上传至服务器,我这里将安装包上传至/usr/local/mysql 下。ps:这时候如果还是不能远程访问的话,可能是防火墙的原因,命令行执行以下命令即可。再次登录,发现缺少 libtinfo.so.5文件,再次建立软连接。登录,发现报错,提示缺少libncurses.so.5文件,使用。创建 /var/lib/ 下mysql目录。登录成功,修改密码,设置远程访问。

为谁伫立在风中 1万+

SQLite初识(四)数据库插入数据

表创建好了,需要插入数据了, 我们下边演示3中方法插入数据给主界面上添加一个按钮,点击按钮执行插入信息操作方法一String insertSql="insert into Student(name,age,address)values('feng',20,'xian')"; mSQLiteDatabase.execSQL(insertSql);方法二 String name="李四";

果酱大师的博客 1490

OpenHarmony AI系列:神经网络处理单元(NPU)驱动架构与实现详解

NPU(Neural Processing Unit,神经网络处理单元)是专门为神经网络计算设计的硬件加速器。在OpenHarmony系统中,NPU驱动是通过NNRT(Neural Network Runtime,神经网络运行时)框架实现的,它作为中间桥梁连接上层AI推理框架和底层NPU硬件,实现AI模型的跨芯片推理计算。

m0_67505153的博客 665

城市公交查询系统c语言,Android的城市公交查询系统

随着国家大力发展公共交通,越来越多的人选择公交出行,如何才能快速准确地获得出行信息也成为了关注的问题。正在被大家使用的GPS和GIS等手段已经非常成熟,其中最主要的三大功能:站点查询,线路查询,公交换乘已经基本满足了用户的需求。但当用户面对从起点到终点有多条线路进行选择时,应用并不能每次都推荐对用户最有利的方案。所以本文以用户需求为核心,不断改进应用的实用性。1应用的开发方法和相关技术简介本应用采...

weixin_39531178的博客 316

TC3XX - MCAL知识点(三十七):AURIX™ TC3xx 的BootLoader烧录APP完成之后跳转使多个核均正常运行

摘要:针对AURIX TC3xx多核芯片在软件复位后仅Core0能启动的问题,分析发现该芯片在Cold Power-on Reset(断电复位)时会完整执行多核启动流程,而Application Reset(软件复位)会跳过从核初始化。解决方案包括:1)在BootLoader中显式调用IfxCpu_startCore()函数启动其他核;2)通过跳转函数强制各核从指定地址启动;3)双Boot场景下让每个核独立响应复位命令。实测表明,软件复位后需手动触发从核启动,或采用断电复位方式确保所有核正常初始化。

梦想技术家 408

web渗透--9--识别web应用框架

1、概述 Web框架指纹识别是信息收集过程中的一个重要任务。获悉目标框架的类型必然为测试人员带来极大的优势,如果该框架在之前就被测试过。测试人员不仅可以获得未修补版本中存在的漏洞,还可以了解此框架中特有的错误配置以及已知的文件结构。从而使指纹识别过程显得格外重要。

武天旭的博客 5098

Python爬取公交车数据(一):Requests+JSON网络站点爬取8684公交站点公交站台数据

文章目录爬取内容分析爬取代码实现代码运行结果清洗代码实现代码实现效果完整代码 爬取内容分析 我们首先打开8684手机网页端 在这里,我输入了B22并准备点击查询,在此之前记得打开开发者模式看一下网页的请求 我们已经成功请求到了数据 在开发者模式中,我们可以看到它是使用get方法获取数据的 可以看到这里的headers没有cookies,说明我们不用将cookies给放进去救可以爬取了,还要注意的就是我们的headers,将这两个放进我们的代码中并请求便可以获取数据了 爬取代码实现 代码 首先呢我们来

ZesenYuan的博客 3989

【AI大模型应用开发】【LangChain系列】实战案例6:利用大模型进行文本总结的方法探索,文本Token超限怎么办?

假设有一组文档(PDF、Notion页面、客户问题等),你想要总结内容。可以利用大模型来帮你。今天来系统看下利用大模型来对文本进行总结的方法,以LangChain的使用为例。

同学小张的博客 3749

如何获取sharepoint列表_FME | 如何抓取公交数据并可视化?

这是第38篇原创文章“之前有小伙伴后台问到如何抓取公交数据,正好开篇整理一下。”一般来说公交数据分两块,公交站点+公交线路。有人可能会说有了公交站点直接连起来不就成了公交线路嘛?其实不是,公交线路应该是公交站点间的城市道路连接起来形成的,单纯公交站点相连得出的结果与道路的匹配度不高,小尺度还好,遇到长距离公交线就会特别明显。01—有哪些网站可以获取公交数据一般来说抓数据会有两种常规路径...

weixin_39853523的博客 503

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

利用Python爬取8684公交路线查询网站中全国公交站点信息

利用python语言结合requests、BeautifulSoup等类库爬取https://api.8684.cn/v3/api.php?do=citys&act=province对应接口中所有城市公交路线信息以及公交站点信息。在结合文件写入等操作将采集到的站点信息以及导航信息保存至对应城市的文件中。数据样例展示, 分隔符为。

刘康康的博客 2029

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Python爬虫实战案例讲解——爬虫爬取地铁线路图

前言 爬虫是一段定向抓取相关网页资源的程序或脚本,Python爬虫是用Python编程语言实现的网络爬虫,相较于其他语言,Python内的大量内置包可以轻松实现网络爬虫功能。 PS:如有需要Python学习资料的小伙伴可以私信我“资料”,可免费获得PDF电子书和视频案例 点击加群即可免费获取Python学习资料 BeautifulSoup(bs4)库介绍 BeautifulSoup:“美味的汤,绿色的浓汤”,是一个可以从HTML或XML文件中提取数据的Python库。BeautifulSoup提供

Python案例分享,B站视频教程:https://space.bilibili.com/523606542 4293

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

php curl 没有数据,php curl 取不到数据 帮我看下 是为什么

$url = 'http://fuzhou.8684.cn/auto.php?cityid=53&keys=%E4%BE%A8';$ch = curl_init($url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_COOKIE, 'www8684cnhome_ecity=fuzhou; ...

weixin_28940217的博客 476

php查询数据并计算距离,PHP 计算距离的示例

这篇文章主要为大家详细介绍了PHP 计算距离的示例,具有一定的参考价值,可以用来参考一下。PHP 中计算距离,感兴趣的小伙伴,下面一起跟随512笔记的小编罗X来看看吧。经测试代码如下:/*** 计算距离** @param* @author 512笔记 www.512pic.com**/function distance($lat1, $lon1, $lat2, $lon2, $unit) {$th...

weixin_31232021的博客 484

爬虫之爬地铁数据

文章目录前言一、爬取网页的基本步骤二、常见细节问题(返回的对象解释)1、BeautifulSoup解析数据:2、find()与find_all()3、Tag 对象三、实践操作-爬取深圳地铁数据1、爬取深圳的地铁数据(不包含时间)2、爬取深圳地铁数据(包含时间)总结1 网页找内容(找不同(只找一个);找相同(找一类)2 根据返回对象不同,调用不同的方法和属性 前言 主要是介绍爬取网页的基本步骤,面对对象编程,所以弄清楚返回的对象类型,可以调用相应的方法和属性。 参考原文:感谢原文作者提供的思路 一、爬取网页

weixin_44719529的博客 2281

php$_server(),PHP之$_SERVER用法详细

PHP之$_SERVER用法详细$_SERVER['PHP_SELF'] #当前正在执行脚本的文件名,与 document root相关。$_SERVER['argv'] #传递给该脚本的参数。$_SERVER['argc'] #...

weixin_39925413的博客 211

php中查询,在PHP中比较一个查询与多个结果

我有两个文本输入。喜欢这个:所以我有一些动态的ajax搜索。我传递输入数据并做出两个不同的mysql选择。这样的事情Table finalmap – SELECT 1id -------- latitud-----longitud---1 | 6.2523915 | -75.5737028 |2 | 6.2640349 | -75.5990783 |3 ...

weixin_33612966的博客 143

php 根据ip判断城市,php 根据ip判断用户所在城市程序

$servername ='localhost';$dbname='8684'; //数据库教程名$dbusername ='root'; //数据库用户名$dbpassword ='123456'; //数据库密码$link=mysql教程_connect($servername,$dbusername,$dbpassword);mysql_select_db($dbname) or die...

weixin_39886547的博客 175

php获取登录地点,使用Php获取最近的地点?

嗨在我的数据库中,我在这50个位置共有100个位置,离我最近的另外50个位置对我来说最长,所以我想使用此顺序对数据进行排序,因此我在这里计算距离$latt=$_REQUEST['latt'];$long=$_REQUEST['long'];$start=$_REQUEST['start'];function distancefind($lat1, $lon1, $lat2, $lon2, $uni...

weixin_31559919的博客 156

php mysql 地理位置_PHP MySql和地理位置

我正在写一个网站,主要是在一个纬度25英里范围内寻找地方,长期使用php和mysql.我想知道这样的事情会怎么样?我会将一个lat和long传递给该脚本,并且只从位于我的数据库位置的纬度25英里内的位置拉出它.做这个的最好方式是什么?编辑:我发现这个代码用于计算2点之间的距离.function distance($lat1, $lon1, $lat2, $lon2, $unit) {$theta ...

weixin_39760967的博客 89

php 地图两点距离计算,计算地图上两点间的距离PHP类

计算地图上两点间的距离,使用的是谷歌地图class GeoHelper{/*** @param int $lat1* @param int $lon1* @param int $lat2* @param int $lon2* @param string $unit* @return*/public static function distance($lat1, $lon1, $lat2, $lon...

weixin_39732609的博客 205

php地理位置,PHP MySql和地理位置

我正在写一个网站,主要是在一个纬度25英里范围内寻找地方,长期使用php和mysql.我想知道这样的事情会怎么样?我会将一个lat和long传递给该脚本,并且只从位于我的数据库位置的纬度25英里内的位置拉出它.做这个的最好方式是什么?编辑:我发现这个代码用于计算2点之间的距离.function distance($lat1, $lon1, $lat2, $lon2, $unit) {$theta ...

weixin_39897218的博客 132
上一篇: Lua
下一篇: SQLite与C结合
DreamFlyingFish
博客等级 码龄20年 7粉丝 23原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值