Сделать так, чтобы списки могли go через функцию - PullRequest
0 голосов
/ 07 января 2020
for url in indexurls:
    row = parseFormPage(indexurls)
row

indexurls - список, заполненный URL-адресами

возвращает ошибку, а не просматривает список. Нужна помощь с итерациями! вот код функции

def parseFormPage(indexurls):
    '''
    Input: URL

    Output:
        filer_cik:
        filing_date:
        report_date:
        form_url
    '''

    # get page and create soup
    res = requests.get(indexurls)
    html = res.text
    soup = BeautifulSoup(html, 'html.parser')

    # parse filer Info on 10K page
    filer_div = soup.find('div', {'id': 'filerDiv'})
    filer_text = filer_div.find('span', {'class': 'companyName'}).find('a').get_text()
    filer_cik = re.search(r"(\d{10})\s(\(.+\))$" ,filer_text)[1]

    # parse 10K Page Meta data
    form_content = soup.find('div', {'class': 'formContent'})

    filing_date = form_content.find('div', text='Filing Date').findNext('div').get_text()
    report_date = form_content.find('div', text='Period of Report').findNext('div').get_text()

    # parse 10-K URL
    table = soup.find('table', {'class': 'tableFile', 'summary': 'Document Format Files'})
    href = table.find('td', text='10-K').find_parent('tr').find('a')['href']
    form_url = "https://www.sec.gov" + href

    return filer_cik, filing_date, report_date, form_url

ошибка ниже

это ошибка ниже, я думаю, это больше проблема со списком?

InvalidSchema: No connection adapters were found for '['https://www.sec.gov/Archives/edgar/data/1599407/0001477932-16-009759-index.htm']

это образец: https://www.sec.gov/Archives/edgar/data/1599407/0001477932-16-009759-index.htm

и ожидаемый результат должен быть в списке:

('0001606163',
 '2016-03-21',
 '2015-12-31',
 'https://www.sec.gov/Archives/edgar/data/1606163/000114420416089184/v434424_10k.htm')

1 Ответ

1 голос
/ 07 января 2020

requests.get занимает один URL, но вы передаете ему список. Это проблема?

Чтобы исправить это, вы должны изменить l oop:

for url in indexurls:
    row = parseFormPage(url)

Plus и переименовать параметр функции:

def parseFormPage(indexurl):
    ...
    res = requests.get(indexurl)
    ...
...