Невозможно записать все значения списка в строку CSV. значения извлекаются из страницы и сохраняются в переменных, но отсутствуют в файле - PullRequest
0 голосов
/ 26 марта 2020

Значения корректно отбрасываются с веб-страницы, но когда я пытаюсь записать в CSV как строку, название компании не записывается в файл.

Вот ссылка на веб-страницу: http://search.sunbiz.org/Inquiry/CorporationSearch/SearchResultDetail?inquirytype=EntityName&directionType=Initial&searchNameOrder=A%201421260&aggregateId=domp-142126-360258c3-c08b-4f9a-8866-ad3ecdedef02&searchTerm=A&listNameOrder=A%201421260

import requests
from bs4 import BeautifulSoup
from requests import get
from json import loads
import csv

def writeFile(data):
    with open("A.csv", "a") as file:
        writer = csv.writer(file)
        writer.writerow(data)

def company_page(url):
    docnum, fenum, fdate, edate, status, levent, companyName, year = '','','','','','','',''
    page = requests.get(url)
    soup = BeautifulSoup(page.text, "lxml")
    # print(soup.prettify())
    reqDiv = soup.find("div", class_ = "detailSection filingInformation")
    companyName = soup.find("div", class_ = "detailSection corporationName").text

    for lab in reqDiv.select("label"):

        if(lab.text == 'Document Number'):
            docnum = lab.find_next_sibling().text
        if(lab.text == 'FEI/EIN Number'):
            fenum = lab.find_next_sibling().text
        if(lab.text == 'Date Filed'):
            fdate = lab.find_next_sibling().text
        if(lab.text == 'Effective Date'):
            edate = lab.find_next_sibling().text
            year = lab.find_next_sibling().text.split('/')[2]
        if(lab.text == 'Status'):
            status = lab.find_next_sibling().text
        if(lab.text == 'Last Event'):
            levent = lab.find_next_sibling().text
        else:
            continue

        details = []
        details.append(companyName)
        details.append(docnum)
        details.append(fenum)
        details.append(fdate)
        details.append(edate)
        details.append(status)
        details.append(levent)
        writeFile(details)

Получение следующих значений в csv enter image description here Я хочу также указать название компании в файле csv. Он хранится в переменной companyName, но не может писать в csv.

1 Ответ

2 голосов
/ 26 марта 2020
import requests
from bs4 import BeautifulSoup
import csv


def Main(url):
    r = requests.get(url)
    soup = BeautifulSoup(r.content, 'html.parser')
    name = soup.find("div", class_="detailSection corporationName").get_text(
        strip=True, separator=" ")
    data = [item.string for item in soup.select(
        "div.detailSection.filingInformation span")]
    del data[5]
    # print(data[2:-2])
    with open("data.csv", 'w', newline="") as f:
        writer = csv.writer(f)
        writer.writerow(["Name", "Document Number",
                         "FEI/EIN Number", "Date Filed", "Status", "Last Event"])
        writer.writerow([name, *data[2:-2]])


Main("http://search.sunbiz.org/Inquiry/CorporationSearch/SearchResultDetail?inquirytype=EntityName&directionType=Initial&searchNameOrder=A%201421260&aggregateId=domp-142126-360258c3-c08b-4f9a-8866-ad3ecdedef02&searchTerm=A&listNameOrder=A%201421260")

Вывод: просмотр в режиме онлайн

enter image description here

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