Соскребание страниц с помощью BeautifulSoup; пытается отфильтровать ссылки, заканчивающиеся на "... html # comments"
Код следует:
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.
Приведенный выше скрипт сохраняет ссылку, заканчивающуюся на "#comments"
Я пытался re.search([^comments], i['href'])
, re.search([^(comments)], i['href'])
и re.search([^'comments'], i['href'])
- все синтаксические ошибки скинули.
Впервые в Python, поэтому извиняюсь за банальность.
Полагаю, либо
(а) я недостаточно разбираюсь в префиксе 'r', чтобы правильно его использовать или
(b) в ответ на [^ (foo)] re.search возвращает не набор строк, исключающих «foo», а набор строк, состоящий из более чем «foo». например, я сохраняю свою ссылку ... # комментариев, потому что ... texttexttext.html # комментариев предшествует ей или
(c) Python интерпретирует "#" как комментарий, заканчивающийся строкой, которой должен соответствовать re.search.
Я думаю, что я не прав (b).
Извините, знайте, это просто. Спасибо,
Zack