написание csv с кодом python - мне нужно разбить результаты на несколько файлов - PullRequest
0 голосов
/ 04 августа 2020

Я php разработчик, но сейчас учусь python.

Я очищаю некоторую информацию, и список результатов огромен: 150 000+ строк.

Следующий код действительно работает однако писатель или скрипт, кажется, захлебываются примерно на 10 000 строк.

Я хочу разделить результаты и попросить писателя записать несколько файлов CSV по 10 000 строк, а не пытаться записать все результаты в один файл.

В php id сделайте это с помощью переменной счетчика и прекратите запись текущего файла, начните записывать новый файл с новым именем.

Однако, все еще изучая синтаксис для python.

Кто-нибудь может указать мне правильные линии?

Спасибо.

Вот код:

while True:
        # preOffset = driver.execute_script("return document.body.scrollHeight;")
        driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")            ## Scroll Content
        # if driver.find_element_by_class_name("NoMoreItems"):
        if driver.find_elements_by_xpath("//*[@class='NoMoreItems']"):
            break
        # print(driver.execute_script("return document.body.scrollHeight;"))
    html= driver.page_source                                                                ## Get HTML Source
    soup = BeautifulSoup(html, 'lxml')                                                      ## Parse to BS4

        tag = soup.find('div', {'id': 'members'})                   ## Find desire DIV

    tag = tag.find('div', {'class': 'ListContainer'})                       ## Get List container
    # for achr in tag.finAll('a'):
    #     print(achr.string)
    
    with open('members.csv', 'w', encoding="utf-8", newline='') as csvfile:                 ## Initialize the CSV

        # Column of csv file
        column_name = ['Name', 'URL']                                                ## Define Column Name and URL
        writer = csv.DictWriter(csvfile, fieldnames=column_name)                            
        writer.writeheader()                                                                ## Header Write
    
        for link in tag.findAll('a'):                                                       ## Find each Anchor tag contains Name
            link = link
            if link.string != None:
                writer.writerow({
                    'Name': link.string,
                    'URL': link["href"]
                })

1 Ответ

0 голосов
/ 04 августа 2020

Всем спасибо. Я нашел виновного. Список, который я пытался очистить, имеет встроенный лимит в 10 КБ. Я должен был знать. Еще раз спасибо.

...