У меня проблемы с сохранением вывода Python (селен) в текстовый файл - PullRequest
0 голосов
/ 15 декабря 2018

У меня проблемы с сохранением вывода в файл.Я использую следующий скрипт (обратите внимание, что это австралийский веб-сайт):

from selenium import webdriver
import time

    chrome_path =r"C:\Users\Tom\Desktop\chromedriver.exe"
    driver = webdriver.Chrome(chrome_path)
    driver.get("https://pointsbet.com.au/basketball/NBA")

    time.sleep(2)

    driver.find_element_by_xpath("""/html/body/div[1]/div[2]/sport-competition-component/div[1]/div[2]/div[1]/div/event-list/div[1]/event/div/header/div[1]/h2/a""").click()
    time.sleep(2)


    posts = driver.find_elements_by_class_name("market")
    for post in posts:
        print(post.text)


    with open('output12.txt',mode ='w') as f:
        f.write(str(post))

вывод в текстовом файле выглядит как:

<selenium.webdriver.remote.webelement.WebElement (session="af079b982b14f33d736b6745ad6e9648", element="0.8397874328987758-6")>

он должен выглядеть как-товот так (в зависимости от данных веб-сайтов на тот момент):

ГОЛОВА В ГОЛОВУ Мемфисские гризли 1.55 Майами Хит 2.53 ЛИНИЯ Мемфисские гризли -4.0 1.92 Майами Хит +4.0 1.92 ВСЕГО ТОЧЕК За 195.5 1.87 Менее 195.5 1.96 ИМЯХАРАКТЕРИСТИКА СТАВКИ Майк Конли и Марк Гасол объединяются для получения 41+ баллов 2.50

Выше показано, как текст печатается при запуске сценария.

Любая помощь будет великолепна

спасибо - новинка в переполнении стека - это фантастика

Ответы [ 2 ]

0 голосов
/ 15 декабря 2018

Это даст вам вывод, который вы после (комментарии в строке)

posts = driver.find_elements_by_class_name("market")

# Open your output file
with open('output12.txt', mode='w') as f:
    # Iterate through the posts list
    for post in posts:
        # Print the output to both the screen and the file
        print(post.text)
        f.write(post.text)
0 голосов
/ 15 декабря 2018

Исправьте ваш цикл for следующим образом и скажите, работает ли он для вас: обратите внимание, что with open(...) ... должен быть внутри цикла for, а не снаружи!Вам также необходимо открыть файл в режиме append.

for post in posts:
    print(post.text)
    with open('output12.txt',mode ='a') as f:
        f.write(post.text)

Другим решением, более эффективным, как указал @Tommy, может быть:

with open('output12.txt',mode ='w') as f:    
        for post in posts:
            print(post.text)
            f.write(post.text)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...