新聞採集php源碼,基於php的新聞發佈系統

本文目錄一覽:

求帶登錄的網站採集php源碼或思路

獲取鏈接的數據以後,加個判斷:如果需要登陸 ,則使用php的curl函數來模擬post;不需要登陸則直接採集。

求抓取網頁內容的程序或代碼(兩層或更多,delphi)

抓取網頁內容,通常大家以為到網上偷數據,然後把到收集到的數據掛到自己網上去。其實也可以將採集到的數據做為公司的參考,或把收集的數據跟自己公司的業務做對比等。

目前網頁採集多為3P代碼為多(3P即ASP、PHP 、JSP)。用得最有代表的就動易科技公司BBS中新聞採集系統,和網上流傳的新浪新聞採集系統等都是用ASP程序來使用,但速度從理論上來說不是很好。如果嘗試用其它軟件的多線程採集是不是更快?答案是肯定的。用DELPHI、VC、VB、JB都可以,PB似乎比較不好做。以下用DELPHI來解釋採集網頁數據。

一、 簡單的新聞採集

新聞採集是最簡單的,只要識別標題、副題、作者、出處、日期、新聞主體、分頁就可以了。在採集之前肯定要取得網頁的內容,所以在DELPHI里加入idHTTP控件(在indy Clients面板),然後用idHTTP1.GET 方法取得網頁的內容,聲明如下:

function Get(AURL: string): string; overload;

AURL參數,是string類型,指定一個URL地址字符串。函數返回也是string類型,返回網頁的HTML源文件。比如我們可以這樣調用:

tmpStr:= idHTTP1.Get(『』);

調用成功後,tmpstr變量里存儲的就是網易主頁的代碼了。

接下來,講一下數據的截取,這裡,我定義了這麼一個函數:

function TForm1.GetStr(StrSource,StrBegin,StrEnd:string):string;

var

in_star,in_end:integer;

begin

in_star:=AnsiPos(strbegin,strsource)+length(strbegin);

in_end:=AnsiPos(strend,strsource);

result:=copy(strsource,in_sta,in_end-in_star);

end;

StrSource:string類型,表示HTML源文件。

StrBegin:string類型,表示截取開始的標記。

StrEnd:string,表示截取結束的標記。

函數返回字符串StrSource中從StrSource到StrBegin之間的一段文本。

比如:

strtmp:=TForm1.GetStr(『A123BCD』,『A』,『BC』);

運行後,strtmp的值為:』123』。

關於函數里用到的AnsiPos和copy,都是系統定義的,可以從delphi的幫助文件里找到相關說明,我在這裡也簡單羅嗦一下:

function AnsiPos(const Substr, S: string): Integer

返回Substr在S中第一次出現的位置。

function copy(strsource,in_sta,in_end-in_star): string;

返回字符串strsource中,從in_sta(整型數據)開始到in_end-in_star(整型數據)結束的字符串。

有了以上函數,我們就可以通過設置各種標記,來截取想要的文章內容了。在程序中,比較麻煩的是我們需要設置許多標記,要定位某一項內容,必須設置它的開始和結束標誌。比如要取得網頁上的文章標題,必須事先查看網頁代碼,查看出文章標題前邊和後邊的一些特徵代碼,通過這些特徵代碼,來截取文章的標題。

下面我們來實際演示一下,假設要採集的文章地址為

代碼為:

html

head

meta http-equiv=”Content-Language” content=”zh-cn”

meta name=”GENERATOR” content=”Microsoft FrontPage 5.0″

meta name=”ProgId” content=”FrontPage.Editor.Document”

meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″

title新建網頁 1/title

/head

body

p align=”center”b文章標題/b/p

table border=”1″ cellpadding=”0″ cellspacing=”0″ style=”border-collapse: collapse” bordercolor=”#111111″ width=”100%” id=”AutoNumber1″

trtd width=”60%”作者/td

td width=”40%”出處/td/tr

/table

pfont size=”2″這裡是文章內容正文。/font/p

a href=’..new_pr.asp’上一頁/a a href=’new_ne.asp’下一頁/a

/body

/html

第一步,我們用StrSource:= idHTTP1.Get(『 』);將網頁代碼保存在strsource變量中。

然後定義strTitle、strAuthor、strCopyFrom、strContent:

strTitle:= GetStr(StrSource,』 p align=”center”b』,』 /b/p』):

strAuthor:= GetStr(StrSource,』 trtd width=”60%”』,』 /td』):

strCopyFrom:= GetStr(StrSource,』 td width=”40%”』,』 /td/tr』):

strContent:= GetStr(StrSource,』 pfont size=”2″,』 /font/p』):

這樣,就能把文章的標題、副題、作者、出處、日期、內容和分頁分別存儲在以上變量中。

第二步,用循環的辦法,打開下一頁,並取得內容,加到strContent變量中。

StrSource:= idHTTP1.Get(『new_ne.asp』);

strContent:= strContent +GetStr(StrSource,』 pfont size=”2″,』 /font/p』):

然後再判斷有沒有下一頁,如果還有就接着取得下一頁的內容。

這樣就完成了一個簡單的截取過程。從以上的程序代碼可以看到,我們使用的截取辦法都是找截取內容的頭部和尾部的,如果遇到這個頭部和尾部有多個怎麼辦?似乎沒辦法,只會找到第一個,所以在找之前應該驗證一下是不是只有一處有這個截取的內容的前後部。

————-

希望可以給你些幫助:)

php獲取網頁源碼內容有哪些辦法

可以參考以下幾種方法:

方法一: file_get_contents獲取

span style=”white-space:pre” /span$url=””;

span style=”white-space:pre” /span$fh= file_get_contents

(”);span style=”white-space:pre” /spanecho $fh;

方法二:使用fopen獲取網頁源代碼

span style=”white-space:pre” /span$url=””;

span style=”white-space:pre” /span$handle = fopen ($url, “rb”);

span style=”white-space:pre” /span$contents = “”;

span style=”white-space:pre” /spanwhile (!feof($handle)) {

span style=”white-space:pre”  /span$contents .= fread($handle, 8192);

span style=”white-space:pre” /span}

span style=”white-space:pre” /spanfclose($handle);

span style=”white-space:pre” /spanecho $contents; //輸出獲取到得內容。

方法三:使用CURL獲取網頁源代碼

$url=””;

$UserAgent = ‘Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 3.5.21022; .NET CLR 1.0.3705; .NET CLR 1.1.4322)’;

$curl = curl_init(); //創建一個新的CURL資源

curl_setopt($curl, CURLOPT_URL, $url); //設置URL和相應的選項

curl_setopt($curl, CURLOPT_HEADER, 0);  //0表示不輸出Header,1表示輸出

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //設定是否顯示頭信息,1顯示,0不顯示。//如果成功只將結果返回,不自動輸出任何內容。如果失敗返回FALSE

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);

curl_setopt($curl, CURLOPT_ENCODING, ”); //設置編碼格式,為空表示支持所有格式的編碼

//header中「Accept-Encoding: 」部分的內容,支持的編碼格式為:”identity”,”deflate”,”gzip”。

curl_setopt($curl, CURLOPT_USERAGENT, $UserAgent);

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);

//設置這個選項為一個非零值(象 「Location: 「)的頭,服務器會把它當做HTTP頭的一部分發送(注意這是遞歸的,PHP將發送形如 「Location: 「的頭)。

$data = curl_exec($curl);

echo $data;

//echo curl_errno($curl); //返回0時表示程序執行成功

curl_close($curl); //關閉cURL資源,並釋放系統資源

拓展資料

PHP(外文名:PHP: Hypertext Preprocessor,中文名:「超文本預處理器」)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法。它可以比CGI或者Perl更快速地執行動態網頁。

用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML(標準通用標記語言下的一個應用)文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多;PHP還可以執行編譯後代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。

參考資料:PHP(超文本預處理器)-百度百科

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/236753.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:01
下一篇 2024-12-12 12:01

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • 雲智直聘 源碼分析

    本文將會對雲智直聘的源碼進行分析,包括前端頁面和後端代碼,幫助讀者了解其架構、技術實現以及對一些常見的問題進行解決。通過本文的閱讀,讀者將會了解到雲智直聘的特點、優勢以及不足之處,…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • 使用PHP foreach遍歷有相同屬性的值

    本篇文章將介紹如何使用PHP foreach遍歷具有相同屬性的值,並給出相應的代碼示例。 一、基礎概念 在講解如何使用PHP foreach遍歷有相同屬性的值之前,我們需要先了解幾…

    編程 2025-04-28
  • 新聞學學Python嗎?

    是的,新聞學需要學習Python。Python作為一種通用編程語言,廣泛應用於數據科學,特別是大數據領域。隨着人工智能和自動化對新聞產業的影響越來越大,學習Python對於現代新聞…

    編程 2025-04-28
  • Python網站源碼解析

    本文將從多個方面對Python網站源碼進行詳細解析,包括搭建網站、數據處理、安全性等內容。 一、搭建網站 Python是一種高級編程語言,適用於多種領域。它也可以用於搭建網站。最常…

    編程 2025-04-28
  • 源碼是什麼

    源碼是一段計算機程序的原始代碼,它是程序員所編寫的可讀性高、理解性強的文本。在計算機中,源碼是指編寫的程序代碼,這些代碼按照一定規則排列,被計算機識別並執行。 一、源碼的組成 源碼…

    編程 2025-04-27
  • PHP獲取301跳轉後的地址

    本文將為大家介紹如何使用PHP獲取301跳轉後的地址。301重定向是什麼呢?當我們訪問一個網頁A,但是它已經被遷移到了另一個地址B,此時若服務器端做了301重定向,那麼你的瀏覽器在…

    編程 2025-04-27
  • Go源碼閱讀

    Go語言是Google推出的一門靜態類型、編譯型、並髮型、語法簡單的編程語言。它因具有簡潔高效,內置GC等優秀特性,被越來越多的開發者所鍾愛。在這篇文章中,我們將介紹如何從多個方面…

    編程 2025-04-27
  • PHP登錄頁面代碼實現

    本文將從多個方面詳細闡述如何使用PHP編寫一個簡單的登錄頁面。 1. PHP登錄頁面基本架構 在PHP登錄頁面中,需要包含HTML表單,用戶在表單中輸入賬號密碼等信息,提交表單後服…

    編程 2025-04-27

發表回復

登錄後才能評論