RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 915681
Accepted
fermeg
fermeg
Asked:2020-12-05 14:34:06 +0000 UTC2020-12-05 14:34:06 +0000 UTC 2020-12-05 14:34:06 +0000 UTC

从 WEB 页面解析数据时出现“append() 不接受关键字参数”错误

  • 772

我写了一个解析器,但由于某种原因,字典出现了错误。

from lxml.html import fromstring
import requests
from urllib.parse import urljoin
from pandas import DataFrame, ExcelWriter

url = 'http://reestr.nopriz.ru'

def prinz():
    r = requests.get(url).text
    f = fromstring(r)

    df = DataFrame(columns=('Номер в гос. реестре', 'ИНН', 'ОГРН', 'Федеральный округ', 'Адрес местонахождения', 'Фактический адрес', 'Телефон'
    'Email', 'Адрес сайта', 'Руководитель коллегиального органа СРО', 'Руководитель исполнительного органа СРО', ))

    for value in range(1, 2):
        silk = ('http://reestr.nopriz.ru/?page=%s' % value)

        pr = requests.get(silk).text
        pf = fromstring(pr)
        for dd in pf.cssselect('.col-xs-12 table tr'):
            da = dd.cssselect('tr')[0]
            dhref = da.get('rel')
            dj = urljoin(url, dhref)
            #print(dj)


            dr = requests.get(dj).text
            df = fromstring(dr)

            try:
                nomer = df.cssselect('.col-xs-5 tr td')[1].text_content()
                inn  = df.cssselect('.col-xs-5 tr td')[3].text_content()
                ogrn = df.cssselect('.col-xs-5 tr td')[5].text_content()
                federal = df.cssselect('.col-xs-5 tr td')[7].text_content()
                adress = df.cssselect('.col-xs-5 tr td')[9].text_content()
                factadress = df.cssselect('.col-xs-5 tr td')[11].text_content()
                tel = df.cssselect('.col-xs-5 tr td')[13].text_content()
                email = df.cssselect('.b-table-sro tr td')[15].text_content()
                rykk = df.cssselect('.b-table-sro tr td')[17].text_content()
                rykkisp = df.cssselect('.b-table-sro tr td')[19].text_content()
                obnov = df.cssselect('.b-table-sro tr td')[21].text_content()

            except Exception as e:
                continue

            prizreestr = [('Номер в гос. реестре', nomer), ('ИНН', inn), ('ОГРН', ogrn), ('Федеральный округ', federal), ('Адрес местонахождения', adress), ('Фактический адрес', factadress),
                            ('Телефон', tel), ('Email', email), ('Руководитель коллегиального органа СРО', rykk), ('Руководитель исполнительного органа СРО', rykkisp), ('Обновлено', obnov)]

            df = df.append(dict(prizreestr), ignore_index=True)
            print(df)

    writer = ExcelWriter('prizr.xlsx', engine='xlsxwriter')
    df.to_excel(writer, sheet_name='1', header=True, index=False)
    writer.save()

错误输出:

Возникло исключение: TypeError
append() takes no keyword arguments
  File "C:\Users\artdd\github\pythonproject\nopriz.py", line 49, in prinz
    df = df.append(dict(prizreestr), ignore_index=True)
  File "C:\Users\artdd\github\pythonproject\nopriz.py", line 59, in main
    prinz()
  File "C:\Users\artdd\github\pythonproject\nopriz.py", line 62, in <module>
    main()

错误的原因是什么?

python
  • 3 3 个回答
  • 10 Views

3 个回答

  • Voted
  1. Best Answer
    gil9red
    2020-12-05T15:49:26Z2020-12-05T15:49:26Z

    让我们仔细看看:

    df = DataFrame(columns=('Номер в гос. реестре', 'ИНН', 'ОГРН', 'Федеральный округ', 'Адрес местонахождения', 'Фактический адрес', 'Телефон' ...
    
    ...
    
    df = fromstring(dr)
    
    ...
    
    df = df.append(dict(prizreestr), ignore_index=True)
    

    df某个时间点的变量停止存储对类型对象的引用DataFrame。

    取而代之的是,df = fromstring(dr)例如root = fromstring(dr),好吧,因此,root.cssselect

    从返回的对象fromstring也有一个方法append,但不支持关键字参数,但你有ignore_index

    • 5
  2. MaxU - stop genocide of UA
    2020-12-05T16:24:25Z2020-12-05T16:24:25Z

    使用魔法lxml和Pandas:

    import pandas as pd
    import requests
    from lxml.html import fromstring
    from urllib.parse import urljoin
    
    url = 'http://reestr.nopriz.ru'
    
    def parse_page(url=url):
        r = requests.get(url)
        if not r.ok:
            r.raise_for_status()
        tree = fromstring(r.text)
        urls = [urljoin(url, x.attrib['rel'])
                for x in tree.cssselect('.col-xs-12 table tbody tr')]
        dfs = []
        for u in urls:
            dfs.append(pd.concat([d.set_index(0).T for d in pd.read_html(u)], axis=1))
        return pd.concat(dfs, ignore_index=True)
    
    
    df = parse_page(url)
    

    结果:

    In [118]: df
    Out[118]:
    0  Номер в гос. реестре:               ...                                      Обновлено:
    0     СРО-И-001-28042009               ...                 28.11.2018 в 12:36 (UTC +03:00)
    1     СРО-И-002-03082009               ...                 15.11.2018 в 15:48 (UTC +03:00)
    2     СРО-И-003-14092009               ...                 04.12.2018 в 17:21 (UTC +03:00)
    3     СРО-И-004-29092009               ...                 27.11.2018 в 09:57 (UTC +03:00)
    4     СРО-И-005-26102009               ...                 28.12.2017 в 14:39 (UTC +03:00)
    5     СРО-И-006-09112009               ...                 29.11.2018 в 16:20 (UTC +03:00)
    6     СРО-И-007-30112009               ...                 28.11.2018 в 13:06 (UTC +03:00)
    7     СРО-И-008-30112009               ...                 20.11.2018 в 14:32 (UTC +03:00)
    8     СРО-И-009-07122009               ...                 03.08.2018 в 11:02 (UTC +03:00)
    9     СРО-И-010-11122009               ...                 19.11.2018 в 12:40 (UTC +03:00)
    10    СРО-И-011-23122009               ...                 19.11.2018 в 14:08 (UTC +03:00)
    11    СРО-И-012-24122009               ...                 03.12.2018 в 18:47 (UTC +03:00)
    12    СРО-И-013-25122009               ...                 03.12.2018 в 12:27 (UTC +03:00)
    13    СРО-И-014-25122009               ...                 28.11.2018 в 10:40 (UTC +03:00)
    14    СРО-И-015-25122009               ...                 12.11.2018 в 10:01 (UTC +03:00)
    15    СРО-И-016-28122009               ...                 27.11.2018 в 09:38 (UTC +03:00)
    16    СРО-И-017-29122009               ...                 03.12.2018 в 10:12 (UTC +03:00)
    17    СРО-И-018-30122009               ...                 04.12.2018 в 18:48 (UTC +03:00)
    18    СРО-И-019-11012010               ...                 03.12.2018 в 12:12 (UTC +03:00)
    19    СРО-И-020-11012010               ...                 28.11.2018 в 10:54 (UTC +03:00)
    
    [20 rows x 12 columns]
    
    In [119]: df.columns
    Out[119]:
    Index(['Номер в гос. реестре:', 'ИНН:', 'ОГРН:', 'Федеральный округ:', 'Адрес местонахождения:', 'Фактический адрес:', 'Телефон:',
           'Email:', 'Адрес сайта:', 'Руководитель коллегиального органа СРО:', 'Руководитель исполнительного органа СРО:', 'Обновлено:'],
          dtype='object', name=0)
    

    注意:答案中给出的函数解析一页。添加页面循环应该很容易......

    • 5
  3. Александр
    2020-12-05T15:21:01Z2020-12-05T15:21:01Z

    也许您在 try-except 块中有错误

    无论如何,页面和字典的内容是非常不同的。

    在此处输入图像描述

    • 1

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    是否可以在 C++ 中继承类 <---> 结构?

    • 2 个回答
  • Marko Smith

    这种神经网络架构适合文本分类吗?

    • 1 个回答
  • Marko Smith

    为什么分配的工作方式不同?

    • 3 个回答
  • Marko Smith

    控制台中的光标坐标

    • 1 个回答
  • Marko Smith

    如何在 C++ 中删除类的实例?

    • 4 个回答
  • Marko Smith

    点是否属于线段的问题

    • 2 个回答
  • Marko Smith

    json结构错误

    • 1 个回答
  • Marko Smith

    ServiceWorker 中的“获取”事件

    • 1 个回答
  • Marko Smith

    c ++控制台应用程序exe文件[重复]

    • 1 个回答
  • Marko Smith

    按多列从sql表中选择

    • 1 个回答
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Suvitruf - Andrei Apanasik 什么是空? 2020-08-21 01:48:09 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5