Я довольно новичок в Python и впервые использую красивый суп, хотя у меня есть некоторый опыт работы с селеном. Я пытаюсь почистить веб-сайт ("http://cbseaff.nic.in/cbse_aff/schdir_Report/userview.aspx") для всех номеров филиалов.
Проблема в том, что они на нескольких страницах (20 результатов на 1, всего: 21 000+ результатов)
Итак, я хотел бы проанализировать их в каком-то цикле, который может повторяться на следующей странице, проблема с URL-адресом веб-страницы не меняется и, следовательно, здесь нет шаблона.
Ладно, для этого я попробовал, лист Google метод импорта HTML / Import XML, но из-за большого количества проблем он просто зависает.
Затем я попробовал python и начал читать о чистке с использованием python (я делаю это впервые :)) Кто-то на этой платформе предложил метод
( Python Requests / BeautifulSoup доступ к нумерации страниц )
Я пытаюсь сделать то же самое, но без особого успеха.
Кроме того, чтобы получить результат, который мы должны сначала выполнить, запросим строку поиска с ключевым словом «a» ->, затем нажмите «поиск». Только тогда сайт покажет результат.
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.by import By
import time
options = webdriver.ChromeOptions()
options.add_argument("headless")
driver = webdriver.Chrome(executable_path=r"C:\chromedriver.exe",options=options)
driver.get("http://cbseaff.nic.in/cbse_aff/schdir_Report/userview.aspx")
#click on the radio btn
driver.find_element(By.ID,'optlist_0').click()
time.sleep(2)
# Search the query with letter A And Click Search btn
driver.find_element(By.ID,'keytext').send_Keys("a")
driver.find_element(By.ID,'search').click()
time.sleep(2)
next_button = driver.find_element_by_id("Button1")
data = []
try:
while (next_button):
soup = BeautifulSoup(driver.page_source,'html.parser')
table = soup.find('table',{'id':'T1'}) #Main Table
table_body = table.find('tbody') #get inside the body
rows = table_body.find_all('tr') #look for all tablerow
for row in rows:
cols = row.find_all('td') # in every Tablerow, look for tabledata
for row2 in cols:
#table -> tbody ->tr ->td -><b> --> exit loop. ( only first tr is our required data, print this)
Окончательный результат, который я ожидаю, это Список всех номеров филиалов на нескольких страницах.