2015-10-19 47 views
0

我需要幫助從網頁中提取信息。我給網址,然後我需要提取信息,如聯繫電話號碼,地址,href,人名等。我能夠提供完整的頁面源提供的URL與已知標籤。但是我需要一個通用的源代碼來從任何URL中提取這些數據。我使用正則表達式來提取電子郵件,例如如何使用json或xml格式的python從網頁中提取信息?

import urllib 
import re 
#htmlfile=urllib.urlopen("http://www.plainsboronj.com/content/departmental-directory") 
urls=["http://www.plainsboronj.com/content/departmental-directory"] 
i=0 
regex='\b[A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b' 
pattern=re.compile(regex) 
print pattern 
while i<len(urls): 
    htmlfile=urllib.urlopen(urls[i]) 
    htmltext=htmlfile.read() 
    titles=re.findall(pattern,htmltext) 
    print titles 
    i+=1 

這給了我空的列表。任何幫助提取所有信息,如上所述,將不勝感激。 這個想法是給出一個URL,並提取所有的信息,如姓名,電話號碼,電子郵件,地址等以json或xml格式。謝謝大家...!!

+0

你確定你的正則表達式是正確的嗎?我已經下載了您正在訪問的文件,並根據您的表達式進行了過濾,結果隨我正在使用的正則表達式的類型(我使用Ultra Edit文本編輯器(Perl和UNIX正則表達式)和Cygwin UNIX模擬器)而變化。請注意,正則表達式語法取決於底層技術。 – Dominique

+0

當我在python腳本中運行它時,正則表達式工作正常。請給我一些建議,以實現我的其餘目標。我甚至將http://regexr.com/上的正則表達式與示例進行了比較,工作正常 –

回答

0

首先你需要修復你的正則表達式。 \需要在python字符串中轉義。 解決此問題的簡單方法是使用原始字符串r''。

regex=r'\b[A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b

0

同時,我設法得到它的工作,經過一些小的修改(注意,我使用Python 3.4.2工作):

import urllib.request 
import re 
#htmlfile=urllib.urlopen("http://www.plainsboronj.com/content/departmental-directory") 
urls=["http://www.plainsboronj.com/content/departmental-directory"] 
i=0 
regex='[A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,6}' 
pattern=re.compile(regex) 
print(pattern) 
while i<len(urls): 
    htmlfile=urllib.request.urlopen(urls[i]) 
    htmltext=htmlfile.read() 
    titles=re.findall(pattern,htmltext.decode()) 
    print(titles) 
    i+=1 

結果是:

['[email protected]', '[email protected]', ...] 

祝你好運

+0

Thankyou,它已經在python-2.7中爲我工作了。請給我一些工作的名稱,電話號碼,地址,鏈接,郵件等通用的方式..所有其他信息提取和導出到JSON。我知道我可以運行一個單獨的separte正則表達式,但那不是這樣。我需要提取所有信息並以xml或json格式存儲。 TIA –

0

我想你是在wr在這裏你可以看到:你有一個HTML文件,你嘗試從中提取信息。你已經開始通過過濾'@'來做到這一點 - 尋找電子郵件地址(因此你選擇使用正則表達式)。然而,使用正則表達式不能識別名稱,電話號碼等其他內容,因此另一種方法可能會有用。在URL「https://docs.python.org/3/library/html.parser.html」下面有關於如何解析HTML文件的一些解釋。在我看來,這將是解決您的需求的更好方法。