как прикрепить разделитель к скребущему столу? - PullRequest
1 голос
/ 24 мая 2019

очень плохо знаком с кодированием, прошу прощения, если я глуп, но очень хочу учиться. Я очищаю веб-страницу (https://www.myinsuranceclub.com/health-insurance/star-health-network-hospital-list), используя селен, извлекая строки таблицы, как показано в коде ниже. Может ли кто-нибудь подсказать мне, как я могу добавить разделитель для каждого элемента? мотив состоит в том, чтобы сохранить таблицу в формате CSV, разделяющем: имя ;; адрес ;; город ;; штат ;; пин-код

# find_elements_by_xpath returns an array of selenium objects.
total = 302
j=1
while(j <= total):
    i = 1
    while(i <= 25):
        titles_element = driver.find_elements_by_xpath("//*[@id='hospital_all']/tbody/tr[{}]".format(i))
        i += 1
    # use list comprehension to get the actual repo titles and not the selenium objects.
        titles = [x.text for x in titles_element]
    # print out all the titles.
        print('titles:')
        print(titles, '\n')
        sys.stdout = open("data.txt", "a")
    driver.find_element_by_xpath('//*[@id="hospital_all_next"]').click()
    time.sleep(2)
    j+=1

токовый выход: названия: ['Дом престарелых Шриниваса рядом с Натрадж Рокки Адилабад Андхра Прадеш 504001'] названия: ['Больницы Падмасри # 49-48 - 16/5 колония нггос рядом с бензоколонкой Рок Аккайяпалем Андхра-Прадеш 530016'] * ​​1006 *

ожидаемый результат: названия: ['Дом престарелых Шриниваса ;; Рядом с Natraj Talkies ;; Адилабада ;; Андхра-Прадеш ;; 504001' ] названия: ['Больницы Падмасри ;; # 49-48 - 16/5 колония нггос возле бензоколонки Roc; Akkayyapalem ;; Андхра-Прадеш ;; 530016' ]

1 Ответ

0 голосов
/ 24 мая 2019

Используйте объединение, но поскольку вы используете понимание списка, это ведь не список с "," между элементами?

 titles = ';;'.join([x.text for x in titles_element])

python:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver
from bs4 import BeautifulSoup as bs

driver = webdriver.Chrome() 
driver.get('https://www.myinsuranceclub.com/health-insurance/star-health-network-hospital-list')

rows =  WebDriverWait(driver,5).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "#hospital_all tr.odd, #hospital_all tr.even")))

for row in rows:
    soup = bs(row.get_attribute('outerHTML'), 'lxml')
    titles = ';;'.join([x.text for x in soup.select('td')])
    pos = titles[:-2].rfind(";;")
    titles = titles[:-2][:pos] + ' ' + titles[:-2][pos+2:]
    print(titles)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...