Python Selenium - получить все и записать в файл - PullRequest
0 голосов
/ 28 февраля 2019

нуб тут, которому только что удалось активно отказаться от удаленного сервера.Слишком много попыток подключения я подозреваю.... и действительно, я не должен пытаться подключаться каждый раз, когда я хочу попробовать какой-то новый код, так что я получил этот вопрос: Итак, как мне взять все со страницы и сохранить его в файл ... а затем просто загрузите файл в автономном режиме, чтобы найти нужные мне поля.

Я был в процессе тестирования приведенного ниже кода, когда мне было отказано, поэтому я не знаю, что работает - тамвероятно, опечатки приведены ниже: / Может ли кто-нибудь предложить какие-либо предложения или улучшения.

print ("Get CSS elements from page")
parent_elements_css = driver.find_elements_by_css_selector("*")
driver.quit()

print ("Saving Parent_Elements to CSV")
with open('ReadingEggs_BookReviews_Dump.csv', 'w') as file:
    file.write(parent_elements_css)

print ("Open CSV to Parents_Elements")
with open('ReadingEggs_BookReviews_Dump.csv', 'r') as file:
    parent_elements_css = file

print ("Find the children of the Parent")
# Print stuff to screen to quickly find the css_selector 'codes'
# A bit brute force ish 
for css in parent_elements_css:
    print (css.text)
child_elements_span     = parent_element.find_element_by_css_selector("span")
child_elements_class    = parent_element.find_element_by_css_selector("class")
child_elements_table    = parent_element.find_element_by_css_selector("table")
child_elements_tr       = parent_element.find_element_by_css_selector("tr")
child_elements_td       = parent_element.find_element_by_css_selector("td")

Эти другие страницы выглядели интересными:

Python Selelen XPath / CSS C селектор

Получить все дочерние элементы

Расположение элементов

xpath-частичное-совпадение-tr-id-with-python-selenium (ах, потому что я спросил это: D..но ответ Sers офигенный)

В моем предыдущем сохранении файла использовались словарь и json ... но я не мог использовать его вышеиз-за этой ошибки: «TypeError: Объект типа WebElement не является сериализуемым JSON».До этого я не сохранял файлы.

1 Ответ

0 голосов
/ 07 марта 2019

Вы можете получить html всей страницы через driver.page_source.Затем вы можете прочитать html с помощью красивого супа, так что

from bs4 import BeautifulSoup
# navigate to page
html_doc = driver.page_source
soup = BeautifulSoup(html_doc, 'html.parser')
child_elements_span = soup.find_all('span')
child_elements_table = soup.find_all('table')

Вот хорошая документация для разбора html через BeautifulSoup https://www.crummy.com/software/BeautifulSoup/bs4/doc/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...