Python scraper: как зайти в профиль и извлечь данные

1

Я делаю скребок python для проекта. Мне нужно очистить некоторые данные с сайта Doctor Review.

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

Всякая помощь мне очень поможет.

import requests
from bs4 import BeautifulSoup


base_url = "https://www.ratemds.com/best-doctors/?page=1"
for page in range(1, 5, 1):
    r = requests.get(base_url)
    c = r.content
    soup = BeautifulSoup(c, 'html.parser')
    all = soup.find_all("div", {"class": "search-item doctor-profile"})

    for item in all:
        try:
            print(item.find("a", {"class": "search-item-doctor-link"}).text)
        except:
            pass
        try:
            print(item.find("a", {"class": None}).text)
        except:
            pass
  • 0
    Точно так же, как вы сделали с поиском их данных (имя, специальности, количество отзывов), вы хотите найти ссылку на их профиль. Итак, найдите это на странице, а затем сделайте еще одну очистку на странице профиля (для каждой страницы профиля врача), ища на этот раз номер телефона и адрес
  • 1
    Вы находитесь на правильном пути, выбрав "search-item-doctor-link" для каждого из врачей. Для загрузки страницы каждого доктора вместо элемента item.find("a", {"class": "search-item-doctor-link"}).text , вы захотите использовать item.find("a", {"class": "search-item-doctor-link"})['href'] . После того, как у вас есть этот URL для каждого из врачей, вам нужно будет снова использовать requests.get() и выполнить синтаксический анализ с BeautifulSoup. Тем не менее, я взглянул на одну из страниц, и кажется, что сайт затрудняет автоматический сбор этой информации.
Теги:
web-scraping
beautifulsoup

2 ответа

0

В соответствии с @cpander просто сохраните все item.find("a", {"class": "search-item-doctor-link"})['href'] и снова запустите request.get() с сохраненными Urls. Просто краткий пример для получения номера телефона:

item.find("div", attrs={"doctordetail":".1.0.0.0.2.2.0.1.1.0.0.1:1.0"}")

0

Я хочу поблагодарить его за его предложение идеи.

Так я и сделал:

for item in all:
    try:
        n = item.find("a", {"class": "search-item-doctor-link"})
        a = n.get('href')
        print("https://www.ratemds.com/"+a)
    except:
        pass

И я получаю всю ссылку для профилей, остальное знаю.

Спасибо всем, что предложил там помощь :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню