Написание AL oop: получение списка URL-адресов и получение только текста заголовка и мета-описания - BeautifulSoup / Python - PullRequest
2 голосов
/ 31 марта 2020

Я новичок в области здравоохранения publi c. Любая помощь приветствуется.

По сути, наша цель - создать быстрый способ извлечь заголовок и мета-описание из списка URL-адресов. Мы используем Python. Нам больше ничего не нужно от веб-страницы.

У меня есть следующий список под названием "urlList". Я написал (используя Beautiful Soup)

urlList  = https://www.freeclinics.com/cit/ca-los_angeles?sa=X&ved=2ahUKEwjew7SbgMXoAhUJZc0KHYHUB-oQ9QF6BAgIEAI,
https://www.freeclinics.com/cit/ca-los_angeles,
https://www.freeclinics.com/co/ca-los_angeles,
http://cretscmhd.psych.ucla.edu/healthfair/HF%20Services/LinkingPeopletoServices_CLinics_List_bySPA.pdf 

Затем я смог извлечь заголовок и описание одного из URL (см. Код ниже). Я надеялся на это по списку. Я открыт для любой формы экспорта данных - т.е. это может быть таблица данных, файл .csv или .txt.

Я знаю, что мой текущий вывод на печать показывает заголовок и описание в виде строк, где вывод описания находится в []. Это хорошо. Мое главное беспокойство в этом посте заключается в том, чтобы просмотреть весь список urlList.

urlList = "https://www.freeclinics.com/cit/ca-los_angeles?sa=X&ved=2ahUKEwjew7SbgMXoAhUJZc0KHYHUB-oQ9QF6BAgIEAI"

response = requests.get(urlList)
soup = BeautifulSoup(response.text)
metas = soup.find_all('meta')

print((soup.title.string),[ meta.attrs['content'] for meta in metas if 'name' in meta.attrs and meta.attrs['name'] == 'description' ])

>> Output: Free and Income Based Clinics Los Angeles CA ['Search below and find all of the free and income based health clinics in Los Angeles CA. We have listed out all of the Free Clinics listings in Los Angeles, CA below']

Ps - максимум, urlList будет иметь максимум 10-20 ссылок. Все они очень похожи по структуре страницы.

1 Ответ

1 голос
/ 31 марта 2020

Вы можете определить функцию, которая принимает urlList в качестве аргументов и возвращает список списка, где каждый подсписок в основном списке содержит title и соответствующие ему description.

Попробуйте это:

def extract_info(url_list):
    info = []
    for url in url_list:
        with requests.get(url) as response:
            soup = BeautifulSoup(response.text, "lxml")
            title = soup.find('title') .text if soup.find('title') else None
            description = soup.find('meta', {"name": "description"})["content"] if soup.find('meta', {"name": "description"}) else None
            info.append([title, description])
    return info

Вывод:

[['Free and Income Based Clinics Los Angeles CA',
  'Search below and find all of the free and income based health clinics in '
  'Los Angeles CA. We have listed out all of the Free Clinics listings in Los '
  'Angeles, CA below']
...
]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...