2017-07-12 38 views
-4

下面是我的網頁代碼。我期待返回正則表達式的結果,但由於某種原因,它只返回'[]'。爲什麼我的Python代碼不運行我的正則表達式?

任何幫助將非常感激。

感謝

import urllib.request 
import re 

url = ('https://www.myvue.com/whats-on') 
req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla/5.0'}) 

def main(): 
    html_page = urllib.request.urlopen(req).read() 
    content=html_page.decode(errors='ignore', encoding='utf-8') 
    headings = re.findall('<th scope="col" abbr="(.*?)">', content) 
    print(headings) 

main() 
+0

嗯,因爲該模式沒有找到該網頁上的任何地方?你不應該使用正則表達式來解析多級/層次結構(比如HTML) - 使用爲此目的編寫的東西,比如['BeautifulSoup'](https://www.crummy.com/software/BeautifulSoup/bs4/DOC /)。 – zwer

+0

[不要在HTML/XHTML上使用正則表達式](https://stackoverflow.com/a/1732454/1040092) – Wondercricket

+0

@zwer我知道!但我被告知! – Jdsmith

回答

0

像其他人說,不要使用正則表達式與豐富已有的解析器解析以及結構化數據。但是,正如你所說的「你被告知要這樣做」,這裏有一條提示。

測試您的正則表達式的一些你想你的腳本之外捕捉,在做這樣的事情::圖案的

re.compile('<th scope="col" abbr="(.*)">').match('<th scope="col" abbr="hello">').groups() 

當你的模式完全正確的,只是然後運行它針對大的html文件。注意我是如何從你的正則表達式中刪除?的,因爲你已經有了*

相關問題