Очистка атрибутов из выпадающего подменю - PullRequest
2 голосов
/ 17 июня 2019

Я пытаюсь очистить определенные данные с веб-сайта. Данные существуют только в выпадающем подменю другого выпадающего меню и генерируются только после выбора определенной опции основного выпадающего меню. Я использую Выбрать класс селена, чтобы щелкнуть по обоим меню - эта функциональность работает правильно. Однако у меня есть проблема с очисткой данных.

Я подтвердил, что Данные генерируются, сохранив полный файл soup.prettify и найдя его там. Однако всякий раз, когда я использую soup.find (), soup.findAll () или другие поиски, я получаю пустой объект или пустой список

from time import sleep
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.select import Select
from bs4 import BeautifulSoup


login = {
"handle": "login",
"pass": "password"
}

def ScanBot():
    driver.get('http://www.swcombine.com/members/cockpit/travel/index.php?tft=Hyperspace')
    sleep(3)
    sectorOptions = Select(driver.find_element_by_name('sectors')).options
    for i in range (1, len(sectorOptions)):
        Select(driver.find_element_by_name('sectors')).select_by_index(i)
        sleep(3)
        list = Select(driver.find_element_by_name('systemID')).options
        for b in range (1, len(list)):
            #Select(driver.find_element_by_name('systemID')).select_by_index(b)
            text = driver.page_source
            soup = BeautifulSoup(text, 'html.parser')
            print(soup.find_all('select','id="systemID"'))

if __name__ == '__main__':
chrome_options = Options()
chrome_options.add_argument('--ignore-certificate-errors')
chrome_options.add_argument('--incognito')
# chrome_options.add_argument('--headless')
chrome_options.add_argument("--proxy-server=socks5://127.0.0.1:9150")
driver = webdriver.Chrome(executable_path='./chromedriver', options=chrome_options)
LaunchBot(login)
ScanBot()

Печатает только [] пустые результаты для каждой итерации

<select name="systemID" id="systemID" onchange="setCoordsFromSystem()">
    <option data-galx="71" data-galy="-166">-- System --</option>
    <option data-galx="-24" data-galy="-76">Abregado</option>
    <option data-galx="-26" data-galy="-86">Belgaroth</option>
    <option data-galx="-38" data-galy="-87">Delphon</option>
    <option data-galx="-24" data-galy="-81">Dentaal</option>
    <option data-galx="-19" data-galy="-87">Diamal</option>
    <option data-galx="-21" data-galy="-70">Eamus</option>
    <option data-galx="-10" data-galy="-72">Frego</option>
    <option data-galx="0" data-galy="-82">Iphigin</option>
    <option data-galx="-19" data-galy="-74">Plexis</option>
    <option data-galx="-30" data-galy="-80">Steelious</option>
</select>

Это часть исходного кода, которую мне нужно получить Лучше всего вернуть список следующим образом:

-24, -76 Абрегадо

-26, -86 Белгарот

и т. Д.

Большое спасибо за любую помощь

1 Ответ

0 голосов
/ 17 июня 2019

Я думаю, что проблема в print(soup.find_all('select','id="systemID"')) части, измените его на:

print(soup.find_all('select',attrs ={'id':'systemID'}))

Вы увидите выходные данные цели, и вы можете получить данные типа:

datas =soup.find_all('select',attrs ={'id':'systemID'})

for all1 in datas:
    option = all1.find_all('option')
    for getdatas in option:
        print (getdatas.text)
        print (getdatas['data-galx'])
        print (getdatas['data-galy'])

ВЫХОД:

-- System --
71
-166
Abregado
-24
-76
Belgaroth
-26
-86
Delphon
-38
-87
Dentaal
-24
-81
Diamal
-19
-87
Eamus
-21
-70
Frego
-10
-72
Iphigin
0
-82
Plexis
-19
-74
Steelious
-30
-80
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...