Как мне изменить sh мой код, чтобы получить новый ответ для опроса? - PullRequest
0 голосов
/ 20 февраля 2020

Я работал над этим проектом, где сайт дает мне 3 числа с изображениями. Я быстро узнал, что разработчики забыли изменить имя файлов PNG в источнике HTML, поэтому я научился читать их, используя code.

Я уже настроил код с селеном и beatifulsoup, чтобы создать страницу chrome с этим конкретным сайтом. Дайте мне время для входа. Прочитайте источник HTML в текстовом коде, найдите числа и вставьте их в указанную область и нажмите кнопку продолжения. Затем l oop.

import time
import re
import numbers
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By

driver = webdriver.Chrome(executable_path = "C:/Users/user/Desktop/Personal/PythonScripts/chromedriver.exe")
driver.get('URL I USED')

time.sleep(20)
driver.refresh()

soup = BeautifulSoup(driver.page_source ,"lxml")
all_items = soup.find_all('img')

for item in all_items:
    print('char:', item['src'][-5])

LIST = [item['src'][-5] for item in all_items]

new_list = []
for value in LIST:
    try:
        new_list.append(int(value))
    except ValueError:
        continue

for i in new_list: 
    print(i, end="")

try :
 driver.find_element_by_tag_name('input').send_keys(new_list[0],new_list[1],new_list[2])
except :
    print('Fail')

html_source = driver.page_source
print(html_source)

button = driver.find_element_by_xpath('//*[@id="main"]/form/div[3]/input')
button.click()

time.sleep(5)
while True:
        for item in all_items:
            print('char:', item['src'][-5])

        LIST = [item['src'][-5] for item in all_items]

        new_list = []
        for value in LIST:
            try:
                new_list.append(int(value))
            except ValueError:
                continue

        for i in new_list: 
           print(i, end="")

        try :
            driver.find_element_by_tag_name('input').send_keys(new_list[0],new_list[1],new_list[2])
        except :
            print('Fail')

        html_source = driver.page_source
        print(html_source)

        new_list.clear()
        button.click()
        time.sleep(10)
        driver.refresh()

Я довольно плохо знаком с python и кодированием в целом, поэтому не стесняйтесь указывать на мои ошибки, даже не связанные с топи c. Моя проблема в том, что страница не обязательно перезагружается после нажатия кнопки «Продолжить», и я пытался не перезагружать ее, но мой код правильно «читает» первый опрос, но не проходит на последующих, так как он заполняет пробел ранее использованными номерами (только первый один). Я добавил больше необходимого количества времени сна. Удалил driver.refresh() в конце l oop. Ни один из них не сработал.

Заранее спасибо

1 Ответ

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

Я бы порекомендовал вам изменить скрипт, чтобы завершить сеанс драйвера после отправки опроса. Просто запустите while l oop перед запуском драйвера.

С другой стороны, вы используете BeutifulSoup только для получения изображений, вы можете изменить его на

driver.find_elements_by_tag_name ('img')

, чтобы использовать Селен во всех сценариях, find_elements_by_tag_name вернет список элементов

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