Как очистить веб-страницы с помощью поискового запроса, не зная тегов / классов? - PullRequest
2 голосов
/ 13 июня 2019

Я работаю над проектом, использующим Python (3.7) и BeautifulSoup (4) для реализации скребкового решения.

Примечание: Я искал, чтобы найти решениек моей проблеме, но я не мог найти никакого решения, потому что оно отличается от того, что обычно нам нужно для очистки.Поэтому, не отмечайте это как дубликат, пожалуйста!

Этот проект состоит из двух частей:

  1. Мы взяли URL-адреса результатов поиска Google (первые 5например) на основе поискового термина.
  2. Затем мы должны очистить URL-адреса этих результатов поиска, чтобы получить информацию, связанную с поисковым термином, с этих страниц, поэтому мы не знаем фактические классы / теги.страниц этих результатов.

Итак, как мы можем получить релевантную информацию для поискового запроса с веб-страниц, не зная реальных тегов / классов?

Вот что я сделал до сих пор:

soup = BeautifulSoup(driver.page_source, 'lxml')
result_div = soup.find_all('div', attrs={'class': 'g'})

links = []
titles = []
descriptions = []
for r in result_div:
    # Checks if each element is present, else, raise exception
    try:
       link = r.find('a', href=True)
       title = None
       title = r.find('h3')

       if isinstance(title, Tag):
          title = title.get_text()

          description = None
          description = r.find('span', attrs={'class': 'st'})

       if isinstance(description, Tag):
           description = description.get_text()

       # Check to make sure everything is present before appending
       if link != '' and title != '' and description != '':
           links.append(link['href'])
           titles.append(title)
           descriptions.append(description)
    # Next loop if one element is not present
    except Exception as e:
        print(e)
        continue

1 Ответ

1 голос
/ 13 июня 2019

В строке HTML легко найти элементы, содержащие ключевое слово или регулярное выражение, вот как это можно сделать.

Это вернет каждый элемент вашей HTML-страницы, содержащий ключевое слово, которое вы хотите найти.

from bs4 import BeautifulSoup
import re

html_text = """
<h2>some other text</h2>
<p>text you want to find with keyword</p>
<h1>foo bar foo bar</h1>
<h2>text you want to find with keyword</h2>
<a href="someurl">No idea what is going on</a>
<div> text you want to find with keyword</div>
"""

soup = BeautifulSoup(html_text)


for elem in soup(text=re.compile(r'\bkeyword\b | \bkey_word\b | \something else\b | \bone_more_maybe\b')):
    print(elem.parent)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...