『壹』 怎麼復制別人整套網頁詳細一些 如需要用的軟體
復制別人整套網頁(源代碼)是不可能的,除非你有控制對方機器的許可權。但也有幾個下載整站程序軟體,也叫離線瀏覽軟體,它的功能只是把對方的網站連接和內容生成htm文件,下載後在本地瀏覽,內容不可更新。需要的話,你可以在北渡搜索「OfflineExplorerPortable」關鍵字,也可搜索「整站下載程序」。祝你好運。
『貳』 八爪魚能提取代碼嗎
八爪魚能提取代碼。八爪魚有自定義抓取方式的功能,可通過此功能抓取代碼。八爪魚是一款全網通用的互聯網數據採集器,模擬人瀏覽網頁的行為,通過簡單的頁面點選,生成自動化的採集流程,從而將網頁數據轉化為結構化數據。
『叄』 如何使用python或R抓取網頁被隱藏的源代碼
隱藏的源代碼?不知道你指的是什麼?我的理解有兩種,一是不在前段顯示,但是查看源代碼時有,二是,非同步載入的內容在前端和源代碼中均看不到,第一種很容易解決,想必你指的時第二種,解決方法有三種:
模擬瀏覽器,動態獲取,可以使用大殺器selenium工具
使用這種方法可以實現只要能看到就能抓取到,如滑鼠滑過,非同步載入等,因為他的行為可以與瀏覽器一模一樣,但是這種方式的效率卻是最低的,一般不到實在沒有辦法的時候不推薦使用。
執行js代碼
在python中執行非同步載入的js代碼,獲得一些諸如滑鼠滑過,下拉載入更多等,但是現在的網站中都有非常多的js代碼,要找到需要執行的目標js代碼時非常困難和耗時的,此外python對js的兼容性也不是很好,也不推薦使用。
找到非同步載入的json文件,最常用,最方便,最好用的方法,這是我平常抓取動態非同步載入網站時最常用的方法,可以解決我99%的問題。具體的使用方法是打開瀏覽器的開發者工具,轉到network選項,之後重新載入網頁,在network中的列表中找到載入過程中載入的需要動態非同步載入的json文件,以京東為例,如圖,第一張找到的是非同步載入的庫存信息的json文件,第二招找到的是非同步載入的評論信息的json文件:
具體更詳細的方法可以google或網路
『肆』 求抓取網頁內容的程序或代碼(兩層或更多,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(『http://www.163.com』);
調用成功後,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:=(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和,都是系統定義的,可以從delphi的幫助文件里找到相關說明,我在這里也簡單羅嗦一下:
function AnsiPos(const Substr, S: string): Integer
返回Substr在S中第一次出現的位置。
function (strsource,in_sta,in_end-in_star): string;
返回字元串strsource中,從in_sta(整型數據)開始到in_end-in_star(整型數據)結束的字元串。
有了以上函數,我們就可以通過設置各種標記,來截取想要的文章內容了。在程序中,比較麻煩的是我們需要設置許多標記,要定位某一項內容,必須設置它的開始和結束標志。比如要取得網頁上的文章標題,必須事先查看網頁代碼,查看出文章標題前邊和後邊的一些特徵代碼,通過這些特徵代碼,來截取文章的標題。
下面我們來實際演示一下,假設要採集的文章地址為http://www.xxx.com/test.htm
代碼為:
<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">
<tr><td width="60%">作者</td>
<td width="40%">出處</td></tr>
</table>
<p><font size="2">這里是文章內容正文。</font></p>
<a href='..new_pr.asp'>上一頁</a> <a href='new_ne.asp'>下一頁</a>
</body>
</html>
第一步,我們用StrSource:= idHTTP1.Get(『http://www.xxx.com/test.htm 』);將網頁代碼保存在strsource變數中。
然後定義strTitle、strAuthor、strCopyFrom、strContent:
strTitle:= GetStr(StrSource,』 <p align="center"><b>』,』 </b></p>』):
strAuthor:= GetStr(StrSource,』 <tr><td width="60%">』,』 </td>』):
strCopyFrom:= GetStr(StrSource,』 <td width="40%">』,』 </td></tr>』):
strContent:= GetStr(StrSource,』 <p><font size="2">,』 </font></p>』):
這樣,就能把文章的標題、副題、作者、出處、日期、內容和分頁分別存儲在以上變數中。
第二步,用循環的辦法,打開下一頁,並取得內容,加到strContent變數中。
StrSource:= idHTTP1.Get(『new_ne.asp』);
strContent:= strContent +GetStr(StrSource,』 <p><font size="2">,』 </font></p>』):
然後再判斷有沒有下一頁,如果還有就接著取得下一頁的內容。
這樣就完成了一個簡單的截取過程。從以上的程序代碼可以看到,我們使用的截取辦法都是找截取內容的頭部和尾部的,如果遇到這個頭部和尾部有多個怎麼辦?似乎沒辦法,只會找到第一個,所以在找之前應該驗證一下是不是只有一處有這個截取的內容的前後部。
-------------
希望可以給你些幫助:)