Как зациклить данные внутри диапазона (стрелки) и зациклить все это на последовательных страницах? - PullRequest
0 голосов
/ 18 января 2019

Я впервые пытаюсь использовать python с селеном и bs4.Я пытаюсь очистить данные с этого веб-сайта

. Для начала я выбираю GE из выпадающего меню кантона, нажимаю флажок «Conffermo» и кнопку «Ricerca».Тогда я могу видеть данные.Я должен щелкнуть каждую стрелку, чтобы расширить данные и очистить их от каждого человека (это цикл, не так ли).И затем сделайте то же самое на следующей странице (нажав «Affiggere le seguenti entrate» внизу страницы)

Я хотел бы использовать относительный xpath для данных, так как не все люди имеют вседанные (я хотел бы поставить пустую ячейку в Excel, если данные отсутствуют)

Пока это мой код:

  import urllib2
  from bs4 import BeautifulSoup
  from selenium import webdriver
  from selenium.webdriver.common.keys import Keys
  browser = webdriver.Firefox()
  URL = 'http://www.asca.ch/Partners.aspx?lang=it'
  time.sleep(10)
  page = urllib2.urlopen(quote_page) # query the website and return the html to the variable ‘page’
  soup = BeautifulSoup(page, ‘html.parser’) 
  inputElementCantone = driver.find_element_by_xpath(//*[@id="ctl00_MainContent_ddl_cantons_Input"]).click()
  browser.find_element_by_xpath(/html/body/form/div[1]/div/div/ul/li[9]).click()
  browser.find_element_by_xpath(//INPUT[@id='MainContent__chkDisclaimer']).click()
  driver.find_element_by_xpath(//INPUT[@id='MainContent_btn_submit']).click() 
  arrow = browser.find_element_by_class_name("footable-toggle") 

Я застрял после этого.Данные, которые я хотел бы обработать (в столбцах Excel): Дисциплинарная (ые) терапия (и), Cognome, Cellulare и электронная почта.

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 18 января 2019
# To find all the table 
table = soup.find('table', {'class': 'footable'})

# To get all rows in that table
rows = table.find_all('tr')

# A function to process each row
def processRow(row):
    #All rows with hidden data
    dataFields = row.find_all('td', {'style': True}
    output = {}
    #Fixed index numbers are not ideal but in this case will work
    output['Discipline'] = dataFields[0].text
    output['Cogome'] = dataFields[2].text
    output['Cellulare'] = dataFields[8].text
    output['email'] = dataFields[10].text
    return output


#Declaring a list to store all results
results = []

#Iterating over all the rows and storing the processed result in a list
for row in rows:
    results.append(processRow(row))

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