python запрашивает только возврат пустых наборов при очистке - PullRequest
0 голосов
/ 18 февраля 2020

Это моя первая попытка заняться программированием. Я пытаюсь удалить некоторые слова, используя утилиту bs4, selenium et c ... Сайт, который я использую: 'http://oulim.kr'

Как я могу удалить вещи внутри frameset?

это то, что я пробовал

import urllib
from bs4 import BeautifulSoup
from selenium import webdriver

url = 'http://oulim.kr/'

driver = webdriver.Chrome('./driver/chromedriver')
driver.get(url)

html = driver.page_source
soup = BeautifulSoup(html)

a = soup.select("#divAlba > table:nth-child(3) > tbody > tr:nth-child(2) > td:nth-child(5) > a > font > b")
print(a)

from requests_html import HTMLSession
session = HTMLSession()
r = session.get('http://oulim.kr')
r.html.find('.tbody')

1 Ответ

0 голосов
/ 19 февраля 2020

Selenium обрабатывает фреймы как отдельные страницы (потому что он должен загружать их отдельно) и не выполняет поиск во фреймах. И page_source не возвращает HTML из кадра.

Вы должны найти <frame> и переключиться на правильный кадр switch_to.frame(..) для работы с ним.

frames = driver.find_elements_by_tag_name('frame')
driver.switch_to.frame(frames[0])

import urllib
from bs4 import BeautifulSoup
from selenium import webdriver

url = 'http://oulim.kr/'

driver = webdriver.Chrome('./driver/chromedriver')
driver.get(url)

# --- switch frame ---

frames = driver.find_elements_by_tag_name('frame')
driver.switch_to.frame(frames[0])

# --- CSS without BeautifulSoup ---

a = driver.find_element_by_css_selector("#divAlba > table:nth-child(3) > tbody > tr:nth-child(2) > td:nth-child(5) > a > font > b")
print(a.text)

# --- CSS with BeautifulSoup ---

html = driver.page_source
soup = BeautifulSoup(html)

a = soup.select("#divAlba > table:nth-child(3) > tbody > tr:nth-child(2) > td:nth-child(5) > a > font > b")
print(a[0].text)
...