Jestem nowy w Pythonie (nie mam też żadnego szkolenia programistycznego), więc proszę o tym pamiętać, gdy zadaję moje pytanie.Regex Matching Error
Próbuję wyszukać pobraną stronę i znaleźć wszystkie linki przy użyciu określonego wzorca. Zrobiłem to z powodzeniem w innych skryptach, ale otrzymuję błąd, który mówi
raise error, v # invalid expression
sre_constants.error: multiple repeat
muszę przyznać, że nie wiem, dlaczego, ale znowu, jestem nowy w Pythonie i wyrażeń regularnych. Jednak nawet jeśli nie używam wzorców i używam określonego linku (tylko do przetestowania dopasowania), nie wierzę, że zwracam jakiekolwiek dopasowania (nic nie jest wysyłane do okna podczas drukowania match.group (0). testowałem jest wypowiedziało się poniżej.
pomysłów? to zwykle jest mi łatwiej uczą się przez przykład, ale wszelkie porady można dać mile widziana!
Brock
import urllib2
from BeautifulSoup import BeautifulSoup
import re
url = "http://forums.epicgames.com/archive/index.php?f-356-p-164.html"
page = urllib2.urlopen(url).read()
soup = BeautifulSoup(page)
pattern = r'<a href="http://forums.epicgames.com/archive/index.php?t-([0-9]+).html">(.?+)</a> <i>((.?+) replies)'
#pattern = r'href="http://forums.epicgames.com/archive/index.php?t-622233.html">Gears of War 2: Horde Gameplay</a> <i>(20 replies)'
for match in re.finditer(pattern, page, re.S):
print match(0)
Czy można filtrować linki, które chcę ... jak widać w mojej próbie dokonania wyrażeń regularnych, chcę mieć pewien zestaw linków. Dodatkowo i wiem, że pcham szczęście, miałem nadzieję, że otrzymam tekst linku wraz z nim. Krótko mówiąc, czy możliwe jest filtrowanie odsyłaczy i otrzymywanie z nich linku tekstowego? – Btibert3
Kilka rzeczy: co to jest "tekst linku"? Rzeczy między and? Lub wartość href? Lub trochę rzeczy po otwarciu i zamknięcia? Lub coś innego? ¶ Oto, czego nie dostaję: strona, na którą wskażesz, http://forums.epicgames.com/archive/index.php?f-356-p-164.html, nie nawet mają jedno wystąpienie "odpowiedzi" w źródle HTML. Czy jesteś pewien, że tego szukasz? I dlaczego zaakceptowałeś jako odpowiedź wyrażenie regularne, które nie może dorównać żadnym linkom w danych? ¶ – hughdbrown
Nowe do przepełnienia stosu, nie zdawałem sobie sprawy, że to znaczy, że skończyłem, przepraszam. W tekście linku po prostu chcę tekst po łączu w kodzie źródłowym (tekst tuż przed. Odkąd jestem nowy w skrypcie Pythona i skriningu w Internecie, zaczynam powoli i staram się uczyć jak najwięcej. wszystko, co chcę zrobić, to pobrać linki z tego archiwum (każda strona), śledzić każdy link (dyskusję) i pobrać wszystkie posty do tej dyskusji. Będę musiał przeanalizować dane w "zestawie danych", który może być listą, ale po prostu chcę zeskrobać archiwa i zebrać wszystkie tytuły wiadomości i posty dla każdego z nich. – Btibert3