目錄
PHP爬取糗事百科首页糗事
首頁 php教程 php手册 PHP爬取糗事百科首页糗事

PHP爬取糗事百科首页糗事

Jun 13, 2016 am 09:03 AM
百科 首頁

PHP爬取糗事百科首页糗事

突然想获取一些网上的数据来玩玩,因为有SAE的MySql数据库,让它在那呆着没有什么卵用!于是就开始用PHP编写一个爬取糗事百科首页糗事的小程序,数据都保存在MySql中,岂不是很好玩!

说干就干!首先确定思路

获取HTML源码--->解析HTML--->保存到数据库

没有什么难的

1、创建PHP文件“getDataToDB.php”,

2、获取指定URL的HTML源码

这里我用的是curl函数,详细内容参见PHP手册

代码为

 

<span new="" style="font-family:Times">// 获取对应链接的HTMLCODE
function GetHtmlCode($url) {
	$ch = curl_init (); // 初始化一个cur对象
	curl_setopt ( $ch, CURLOPT_URL, $url ); // 设置需要抓取的网页
	curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 ); // 设置crul参数,要求结果保存到字符串中还是输出到屏幕上
	curl_setopt ( $ch, CURLOPT_CONNECTTIMEOUT, 1000 ); // 设置链接延迟
	$HtmlCode = curl_exec ( $ch ); // 运行curl,请求网页
	return $HtmlCode;
}</span>
登入後複製
3、引入第三方文件’simple_html_dom.php‘来解析HTML

这里我没有能力使用正则表达式,就在网上海搜,终于找到这个,就像Java使用Jsoup(使用Jsoup解析滁州学院官网获取新闻列表)一样,具体参见BLOG

代码如下

<span new="" style="font-family:Times">function getFmlDataToDB() {
	$link = mysql_connect ( SAE_MYSQL_HOST_M . &#39;:&#39; . SAE_MYSQL_PORT, SAE_MYSQL_USER, SAE_MYSQL_PASS );
	// 获取源码
	$html = str_get_html ( GetHtmlCode ( http://www.qiushibaike.com/ ) );
	
	if ($link) {
		mysql_select_db ( SAE_MYSQL_DB, $link );
		mysql_query ( &#39;set names utf8&#39; );
		// class=article block untagged mb15
		foreach ( $html->find ( &#39;div[class=article block untagged mb15]&#39; ) as $per ) {
			
			$z = null;
			$t = null;
			$w = null;
			$d = null;
			$p = null;
			$ds = null;
			$ps = null;
			
			// //作者
			$author = $per->find ( &#39;div[class=author]&#39; );
			if ($author != null) {
				$a = $author [0]->find ( &#39;a&#39; );
				$z = $a [1]->innertext;
			} else {
				$z = &#39;no author&#39;;
			}
			
			// 头像链接
			
			if ($author != null) {
				$icon = $author [0]->find ( &#39;a&#39; );
				$t = $icon [0]->src->innertext;
			} else {
				$t = &#39;...............&#39;;
			}
			
			// 文章内容
			$content = $per->find ( &#39;div[class=content]&#39; );
			$w = $content [0]->innertext;
			
			// 点赞数
			$vote1 = $per->find ( &#39;div[class=stats]&#39; );
			$vote2 = $vote1 [0]->find ( &#39;span[class=stats-vote]&#39; );
			$vote3 = $vote2 [0]->find ( &#39;i[class=number]&#39; );
			
			$d = $vote3 [0]->innertext;
			// 评论数
			$comments1 = $vote1 [0]->find ( &#39;span[class=stats-comments]&#39; );
			$comments2 = $comments1 [0]->find ( &#39;a[class=qiushi_comments]&#39; );
			$comments3 = $comments2 [0]->find ( &#39;i[class=number]&#39; );
			$p = $comments3 [0]->innertext;
			// 顶 数
			$up_down = $per->find ( &#39;div[class=stats-buttons bar clearfix]&#39; );
			
			$up_down1 = $up_down [0]->find ( &#39;ul&#39; );
			$li = $up_down1 [0]->find ( &#39;li&#39; );
			$up = $li [0]->find ( &#39;span[class=number hidden]&#39; );
			$ds = $up [0]->innertext;
			// 拍 数
			$down = $li [1]->find ( &#39;span[class=number hidden]&#39; );
			$ps = $down [0]->innertext;

		}
	} else {
		echo &#39;数据库链接KO&#39;;
	}
}</span>
登入後複製
这个代码写的有点纠结,我试了一下不能直接获取子节点的数据,只能从外层一层一层的剥开解析,如果有新的写法,我会更新,也请各位看官看看。

4、创建数据库,将数据插入到数据库中

这里我使用的SAE中的MySQL,具体的连接方发参见使用PHP连接SAE中的MySql数据库

需要注意的就是编码格式,区要在执行语句前加上这样一句话

<span style="font-family:Microsoft">mysql_query ( &#39;set names utf8&#39; );</span>
登入後複製
核心代码如下:

<span style="font-family:Microsoft">			$sql = INSERT INTO `app_bmhjqs`.`db_fml` (`id`, `author`, `icon_url`, `content`, `vote`, `comments`, `up`, `down`) VALUES (NULL, &#39;$z&#39;, &#39;$t&#39;, &#39;$w&#39;, &#39;$d&#39;, &#39;$p&#39;, &#39;$ds&#39;, &#39;$ps&#39;);;
			// 解决乱码
			mysql_query ( &#39;set names utf8&#39; );
			$result = mysql_query ( $sql );</span>
登入後複製

这样一来,获取--->解析--->插入就完成了,效果就是运行一次PHP文件,数据库就添加了糗事百科首页上的糗事!我想可不可以写个定时器,每隔一定时间就运行一次代码,这一点在java我可以实现,在php我不会,毕竟是个没长毛的小鸟!百度吧。。。搜到这样的写法

<span new="" style="font-family:Times">// 定时器
// ignore_user_abort (); // run script. in background
// set_time_limit ( 0 ); // run script. forever
// $interval = 30; // do every 15 minutes..

// do {
// 	echo date ( &#39;Y-m-d H:i:s&#39;, time () );
// 	echo &#39;写入数据库&#39;;
// 	//getFmlDataToDB ();
	
// } while ( true );</span>
登入後複製
在文件里加上这样的代码,正好在学校断网前,发布到了SAE上,我没有测试!只能等到第二天来查看结果了!

 

今天早上,我迫不及待的打开电脑,打开SAE数据库,情况如下:

额滴神!受不鸟了,赶紧把定时器关掉了,写了个按钮触发事件!这样下去,数据库会被挤满的!

 

 

 

 


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何設定谷歌瀏覽器首頁 如何設定谷歌瀏覽器首頁 Mar 02, 2024 pm 04:04 PM

如何設定谷歌瀏覽器首頁?谷歌瀏覽器是如今最受歡迎的網頁瀏覽器軟體,這款瀏覽器擁有簡潔高效的特性,神獸用戶喜歡,在使用瀏覽器的時候,不同的人有不同的設定喜好,有人喜歡將Google瀏覽器設定成預設首​​頁,也有人喜歡將首頁設定成其他搜尋引擎,那麼具體要在哪裡設定呢。接下來小編就帶給大家快速設定Google瀏覽器首頁方法,希望能帶給大家幫助。快速設定Google瀏覽器首頁方法1、開啟Google瀏覽器(如圖)。 2.點選介面右上角的選單鍵(如圖)。 3、選擇「設定」選項(如圖)。 4、在設定選單中,找到「搜尋引擎」(如

Google瀏覽器首頁變360了怎麼辦?Google瀏覽器首頁恢復 Google瀏覽器首頁變360了怎麼辦?Google瀏覽器首頁恢復 Mar 15, 2024 am 08:16 AM

Google瀏覽器首頁變360了怎麼辦?谷歌瀏覽器是一款簡潔便利的瀏覽器,不過許多小夥伴在使用的過程中卻發現簡潔的首頁被替換成了360首頁,想要將它恢復為原來的樣式,那麼應該怎麼設定呢?下面就由小編為大家帶來Google瀏覽器首頁恢復的方法。  解決方法  1、先開啟Google瀏覽器。  2、想要改成默認,那就點選右上角的三個點。  3、點選【設定】開啟設定頁面。  4、點選【啟動時】。  5、如圖所示,這裡【開啟特定網頁或一組網頁】是360導航的網址。  6、點選360導航右側的三個點。  7、點選【移除】。  

UniApp實作首頁與導覽頁的設計與開發方法 UniApp實作首頁與導覽頁的設計與開發方法 Jul 07, 2023 pm 09:09 PM

UniApp實作首頁與導覽頁的設計與開發方法一、簡介UniApp是一款基於Vue.js框架建構的跨平台開發工具,能夠實作一套程式碼編譯出多個平台的應用程式。在UniApp中,首頁和導覽頁是開發應用程式時必備的兩個頁面,本文將介紹UniApp中如何設計和開發這兩個頁面,並提供對應的程式碼範例。二、首頁設計開發方法頁面結構UniApp的首頁一般包含標題列、輪播圖、分類

《冒險尋寶然後打敗魔王》首頁NPC作用一覽 《冒險尋寶然後打敗魔王》首頁NPC作用一覽 Feb 10, 2024 am 11:00 AM

《冒險尋寶然後打敗魔王》是一款西幻背景的RogueLike戰棋遊戲、新遊上線,大家新玩家進入遇到不少問題,其中4個首頁NPC的作用是什麼?接下來就由小編為大家帶來了《冒險尋寶然後打敗魔王》4個首頁NPC作用分享一覽。冒險尋寶然後打敗魔王首頁NPC作用介紹4個首頁NPC的作用:1、冒險團:冒險團升級,賽季冒險團升級,裝備數量上限升級(背包一場冒險結束後記得去清理一下一些廢物裝備,要不然佔格子空間),角色數量上限升級(初始只有8個角色位,金色角色可以超)2、訓練官:訓練角色(紫色和金色可以訓練),升

html子頁如何回到首頁 html子頁如何回到首頁 Nov 15, 2023 am 10:33 AM

html子頁回到首頁的方法:1、使用超連結;2、使用JavaScript;3、使用瀏覽器的歷史記錄。詳細介紹:1、使用超鏈接,在子頁中添加一個超鏈接,將其鏈接到首頁的URL,在子頁的底部或導航欄中添加一個"返回首頁"的鏈接,使用”<a>“標籤來建立超鏈接,設定「href」屬性為首頁的URL;2、使用JavaScript,透過JavaScript程式碼來實現傳回首頁的功能等等。

360瀏覽器首頁怎麼設定 360瀏覽器首頁怎麼設定 Apr 07, 2024 pm 01:40 PM

360瀏覽器首頁怎麼設定? 360瀏覽器是一款安全性非常高的網頁瀏覽器軟體,這款瀏覽器擁有豐富的功能和服務,許多用戶喜歡使用這款瀏覽器辦公,360瀏覽器的主頁內容十分豐富,不少用戶很喜歡這個主頁,也有不少用戶比較喜歡更簡約的主頁,那我們要如何設定360瀏覽器的主頁呢。接下來小編就帶給大家360瀏覽器首頁設定方法介紹,大家快來看看。 360瀏覽器首頁設定方法介紹1、首先需要先進入360安全瀏覽器的主介面(如圖所示)。 2.點選右上方的「三條槓」選項,再點選下拉出現的「設定」選項進入到設定介面就可以進

如何設計首頁輪播圖功能的Java開關買菜系統 如何設計首頁輪播圖功能的Java開關買菜系統 Nov 01, 2023 am 11:20 AM

如何設計首頁輪播圖功能的Java開關買菜系統隨著網路的發展,人們的生活方式也不斷改變。越來越多的人開始選擇在線購物,其中包括買菜。為了滿足使用者的需求,許多買菜平台推出了線上訂購買菜的功能。而在這些平台中,首頁輪播圖是一個非常重要的功能之一。本文將介紹如何設計首頁輪播圖功能的Java開關買菜系統。一、功能需求分析在設計首頁輪播圖功能之前,我們需要先分析和明

DZ首頁URL精簡化:去掉index.php DZ首頁URL精簡化:去掉index.php Mar 12, 2024 pm 04:30 PM

DZ首頁URL精簡化:去掉index.php,需要具體程式碼範例在使用Discuz!論壇系統時,我們常常需要對URL進行最佳化,其中去掉index.php是一個常見的操作。通過去掉index.php,可以讓URL更簡潔美觀,同時也有利於搜尋引擎優化。以下我們來介紹如何實作DZ首頁URL的精簡化,去掉index.php部分的具體程式碼範例。首先,我們需要登入Di

See all articles