Я делаю скребок 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
В соответствии с @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"}")
Я хочу поблагодарить его за его предложение идеи.
Так я и сделал:
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
И я получаю всю ссылку для профилей, остальное знаю.
Спасибо всем, что предложил там помощь :)
"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. Тем не менее, я взглянул на одну из страниц, и кажется, что сайт затрудняет автоматический сбор этой информации.