Обрабатывать UL-теги в Web Scraping, Python 3.6 - PullRequest
0 голосов
/ 08 марта 2019

Я хочу просмотреть таблицу: "&" Дата выпуска: "с URL-адреса: https://www150.statcan.gc.ca/n1/en/type/data?geoname=A0002&p=0#

Я использую веб-драйвер salenium для очистки

Ниже приведены теги, представленные вsource.

<ul>
    # Some HTML Data
</ul>

<ul data-offset="0">
    <li class="ndm-item">
    # Some HTML Tags
</ul>

<ul>
    # Some HTML Tags
</ul>

Я хочу получить подробную информацию о ВТОРОМ теге "ul", где присутствует "data-offset"

for Class_L1 in Soup.findAll('ul', {'data-offset': "0"}):
    for Class_L2 in Class_L1('li',  {'class': 'ndm-item'}):
    for Class_L3 in Class_L2('div',  {'class': 'ndm-result-container'}):
        for Class_L4 in Class_L3.findAll('div',  {'class': 'ndm-result-productid'}):
        Table = str(Class_L4.get_text()).strip()
        print(Table)
        for Class_L4 in Class_L3.findAll('div',  {'class': 'ndm-result-date'}):
        Release_Date = str(Class_L4.get_text()).strip()
        print(Release_Date)

Проблема в том, что источник содержит несколько тегов 'ul' с данными-offset = "0", я просто хочу получить подробности из ВТОРОГО тега 'ul', который содержит data-offset = "0"

1 Ответ

1 голос
/ 08 марта 2019

Вы можете использовать селектор n-го типа. Это основано на:

Я хочу удалить из таблицы "Table:" & "Date release:"

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
url = 'https://www150.statcan.gc.ca/n1/en/type/data?geoname=A0002&p=0'
driver = webdriver.Chrome()
driver.get(url)
tableInfo = [table.text for table in WebDriverWait(driver,10).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "#all .ndm-result-productid")))]
dates = [date.text for date in WebDriverWait(driver,10).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "#all .ndm-result-date:nth-child(2)")))]
results = list(zip(tableInfo, dates))
print(results)
driver.quit()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...