2013-02-15 47 views
0

我想使用正則表達式來解析網站解析使用正則表達式網站在Python

blahblahblah 
<a href="THIS IS WHAT I WANT" title="NOT THIS">I DONT CARE ABOUT THIS EITHER</a> 
blahblahblah 

(有很多的這些,我想以某種形式的標記化所有的)。問題是「一個href」實際上有兩個空格,而不僅僅是一個(有一些是「href」,有一個空格,我不想檢索),所以使用LXML已經證明是相當痛苦的,而我不想使用BeautifulSoup(出於其他原因)。有誰知道我會怎麼做呢?

謝謝!

+0

[RegEx match open tags not except XHTML self-contained tags]可能重複(http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) – JBernardo 2013-02-15 02:45:44

+0

沒有這個不同。從href中挑出兩個空間是困難的,而不是僅僅一個空間。對於它非常脆弱,我也很好,只要它確實符合我的要求,即提取出兩個空格之間的href。 – user1922956 2013-02-15 03:13:43

+1

從另一個問題閱讀第一個答案 – JBernardo 2013-02-15 03:28:07

回答

-1

我相信這個回答你的問題。這只是一些正則表達式,它會在打開'a'標籤後得到所有的href,它們只有兩個空格。

fh = open("index.html", 'r') 
rawString = fh.read() # read entire file to string 
fh.close() 

temp = re.findall("<a href=\".*?\"", rawString) 
if temp: 
    for i in range(len(temp)): # process each match 
     temp[i] = re.search("\".*?\"", temp[i]).group(0) # remove 'href=' 
    print temp  
else: 
    print "Not found" 

對於示例輸出:

[「‘這就是我想要的’」]

0

根據您想要的魯棒性級別,您可以在第一個鏡頭中獲取標記並存儲它,然後在字符串包含「」時替換「」到「」。這將有效地刪除您的字符串中的任何多個空格。

這是需要注意的是using regex to parse HTML is not recommended =)

0

不要讓你受的環節就是回答所折服每次有人問你同樣的問題。它顯然被認爲是大量人們半自動引用的教理問答網頁。 但是,在編程方面,就像在日常生活中,有問答問題,我們在現實中做了什麼。
就個人而言,如果我不認爲HTML可以完全用解析器解析,我推薦限制分析可以用正則表達式完成HTML的某些部分。這是一個實用的觀點。
而且我確實通過正則表達式來分析網頁。有時候會出現一些問題,但他們可以由開發者進行管理。正則表達式很快。有一次,我測量了美麗的湯比正則表達式慢了10倍,而lxml慢了大約50倍。
我比較熟練地用正則表達式獲取Web數據,如果你想提示,我可以給一些,我的電子郵件在我的頁面上。

+0

一個合理的觀點,但你沒有回答這個問題。 – alexis 2013-02-15 22:25:18