#python #beautifulsoup
#python #beautifulsoup
Вопрос:
import requests
from bs4 import BeautifulSoup
url = 'http://www.gmcgujarat.org/searchdoctor.aspx'
html = requests.get(url).text
soup = BeautifulSoup(html, 'html.parser')
name = soup.find(" ")
for count in range(3333,4444):
data = {name: " "}
r = requests.post(url, data=data)
soup = BeautifulSoup(r.text, 'html.parser')
table = soup.find('table',{"id":"divtest"})
for tr in table.find_all('tr',class_='odd')[1:5]:
print tr.text
Код не предоставляет данные ‘tr’ и ‘td’, поскольку ‘tr’ задается в четной и нечетной форме, я не знаю, как извлечь данные из этого.
Комментарии:
1. Если вы хотите удалить данные, так почему вы используете ‘request.post’ вместо этого вы должны использовать ‘request.get’
2. я пытался, но это не working..@Mr . Stark
Ответ №1:
Самый простой способ получить все td
значения на этом веб-сайте — это
data = {name: " "}
r = requests.post(url, data=data)
soup = BeautifulSoup(r.text, 'html.parser')
table = soup.find('table',{"id":"divtest"})
tr_arr = []
for tr in table.find_all('tr'):
tr_arr.append([td.string for td in tr.find_all('td')])
Поскольку вам нужно еще больше покопаться в tr
, чтобы найти все td
файлы.
Но, допустим, вас просто волнует class='odd'
, тогда добавление class_='odd'
в find_all
уже является правильным способом.
Однако, что, если некоторые строки ( tr
) содержат данные, которые вам не нужны. Допустим, вы хотите получить только всю строку с помощью class='odd'
или class='even'
, но некоторые строки поставляются с class='na'
.
На самом деле, вы можете передать dict в идентификатор класса find_all
следующим образом:
table.find_all('tr', {"class": ["odd", "even"]})
Или даже больше, добавив вашу конкретную логику с помощью
table.find_all('tr', class_= lamdba x: x is not None and x in ['odd','even'])
Комментарии:
1. я не понимаю, вы можете помочь мне с кодом? @MatrixTai
2. @ghate, это похоже на код, который вы написали, я просто меняю последнюю часть для поиска
td
. Я добавляю некоторую часть вашего кода для уточнения.3. @ghate, ты уверен, что сможешь получить целевой HTML-текст с помощью
r = requests.post(url, data=data)
?