Как получить только действительные URL-ссылки при разборе страницы с BeautifulSoup? - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь получить список страниц, на которые ссылается страница (используя тег). При разборе страницы я использую BeautifulSoup:

page = opener.open(url)
soup = BeautifulSoup(page.read(), features='lxml')
links = soup.findAll("a", href=True)
for link in links:
    validLink = bool(re.match(r'^(?:https?:\/\/)?(?:[^@\/\n]+@)?(?:www\.)?([^:\/\n]+)', link["href"]))
    if validLink:
         myset.append(link["href"])

Таким образом он ищет теги <a href>, чтобы найти ссылки и вернуть url связанной страницы. Но получающиеся URL в myset выглядят так:

enter image description here

Как мне отфильтровать ссылки, в которых есть хеш-знак ? Также, если я хочу отфильтровать рекламных ссылок или видео , ... какой элемент тега мне следует использовать?

1 Ответ

1 голос
/ 24 апреля 2019

Для ссылки, которая начинается с http или https (вам нужно только указать http), вы можете использовать селектор атрибутов с оператором начала с оператора

links = [item['href'] for item in soup.select('[href^=http]')]

Для рекламных ссылок / видео - хотите ли вы включить илиисключить?Нам нужно будет увидеть соответствующий HTML.Есть ли URL для использования?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...