Если вы новичок, и вы хотите создать веб-сканер для извлечения данных, то я бы рекомендовал selenium однако, селен WebDriver медленнее, чем scrapy (рамочный питон для кодирования веб-сканеров)
Как были посоветовал использовать селен, я сосредоточусь только на селене, используя питон.
Для вашего первого вопроса: «Как захватить такую информацию с этого сайта»
Предположим, сайт, с которого вы хотите извлечь данные в www.fundsupermart.co.in (выбирается это, чтобы показать, как обрабатывать новое окно поп окна)
с помощью селена можно ползать, написав:
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('https://www.fundsupermart.co.in/main/fundinfo/mutualfund-AXIS-BANKING-DEBT-FUND--GROWTH-AXS0077.html')
Это откроет браузер Firefox WebDrive r и загрузите страницу ссылки, представленной в методе get()
.
Теперь предположим, что если вы хотите извлечь таблицу, вы можете извлечь ее с помощью своего имени тега, xpath или class_name, используя функции, предоставляемые selenium. Как здесь, если я хочу, чтобы извлечь таблицу под «Инвестиционная цель»:
Тогда для этого я буду:
right click -> inspect element -> find the appropriate tag from console -> right click -> copy xpath
Здесь я обнаружил, что <tbody>
тег был один из которых я могу извлеките таблицу, чтобы я щелкнул ее правой кнопкой мыши и нажал на копию xpath, поэтому я получил xpath этого тега, т.е.:
xpath=/html/body/table/tbody/tr[2]/td/table/tbody/tr[3]/td/table[2]/tbody/tr/td/table/tbody/tr[1]/td/font/table/tbody/tr[1]/td/table/tbody/tr[5]/td/table/tbody
затем в коде добавить следующую строку:
driver.find_element_by_xpath(xpath).text
Аналогично можно извлечь и другие данные с любого вебом-сайт также увидеть документ селена here
Для вас второго вопроса : «Как я могу очистить информацию в этом дополнительном окне?»
Для перехода по ссылке вы можете использовать функцию click()
, предоставляемую selenium. Предположим, что здесь я хочу нажать на ссылку: Click here for price history
тогда я получить XPath (как это было сделано ранее) и добавьте строку:
driver.find_element_by_xpath(xpath).click()
я открыть новое окно, как это:
Теперь, чтобы извлечь данные из нового окна вы должны переключиться на новое окно, которое вы можете сделать, добавив следующую строку:
windows = driver.window_handles
driver.switch_to_window(windows[1])
Теперь, делая это у меня есть переключил WebDriver в новом окне, и теперь я могу извлечь данные, как я делал раньше, и чтобы закрыть это окно и перейти обратно в исходное окно просто добавить:
driver.close()
driver.switch_to_window(windows[0])
Это был очень простой и наивный подход поисковых роботов, используя селен. Урок here действительно хорош и вам очень поможет.