Scraping-Seiten mit BeautifulSoup; "... html # Kommentare"Syntaxfehler - Python re.search (Zeichenklasse, Caret)
-Code folgt versuchen, Links zu filtern, die in Ende:
import urllib.request
import re
from bs4 import BeautifulSoup
base_url = "http://voices.washingtonpost.com/thefix/morning-fix/"
soup = BeautifulSoup(urllib.request.urlopen(base_url)).findAll('a')
links_to_follow = []
for i in soup:
if i.has_key('href') and \
re.search(base_url, i['href']) and \
len(i['href']) > len(base_url) and \
re.search(r'[^(comments)]', i['href']):
print(i['href'])
Python 3.2, Windows 7 64-bit.
Das obige Skript behält
Ich versuchte re.search([^comments], i['href'])
, re.search([^(comments)], i['href'])
und re.search([^'comments'], i['href'])
in "#Kommentare" einen Link endet - alle Syntaxfehler warf.
Neu bei Python, also Entschuldigung für Banalität.
Ich vermute, entweder (a) Ich verstehe nicht genug über das ‚r‘ Präfix es richtig zu verwenden oder (b) als Reaktion auf [^ (foo)] re.search nicht zurückgibt von Zeilen, die "foo" ausschließen, aber die Menge von Zeilen, die mehr als nur "foo" umfasst. z. B. halte ich meine ... # comments link weil ... texttexttext.html # comments vor oder (c) Python interpretiert "#" als Kommentar, der die Zeile beendet, die re.search entsprechen soll.
Ich glaube, ich liege falsch (b).
Entschuldigung, das ist einfach. Dank,
Zack
Sie sollten den genauen Text der Fehler/Tracebacks sind Sie bekommen. – Amber