wzorzec wyrażenia regularnego w pythonie do analizowania znaczników tytułu HTML
Uczę się używać obure
moduł iurllib
moduł w Pythonie i próba napisania prostego skrobaka WWW. Oto kod, który napisałem, aby zeskanować tylko tytuł stron internetowych:
#!/usr/bin/python
import urllib
import re
urls=["http://google.com","https://facebook.com","http://reddit.com"]
i=0
these_regex="<title>(.+?)</title>"
pattern=re.compile(these_regex)
while(i<len(urls)):
htmlfile=urllib.urlopen(urls[i])
htmltext=htmlfile.read()
titles=re.findall(pattern,htmltext)
print titles
i+=1
Daje to poprawne wyjście dla Google i Reddit, ale nie dla Facebooka - tak:
['Google']
[]
['reddit: the front page of the internet']
To dlatego, że znalazłem, że na stronie Facebookatitle
tag jest następujący:<title id="pageTitle">
. Aby pomieścić dodatkoweid=
, Zmodyfikowałemthese_regex
zmienna w następujący sposób:these_regex="<title.+?>(.+?)</title>"
. Ale daje to następujące dane wyjściowe:
[]
['Welcome to Facebook \xe2\x80\x94 Log in, sign up or learn more']
[]
W jaki sposób mógłbym połączyć oba, aby móc uwzględnić dodatkowe parametry przekazane w ramachtitle
etykietka?