#内容
クラスのコンストラクタで、URLを引数にしてHTMLをパースして、これをDBに入れる処理を書いています。
#不具合
クラスの中から、クラスを呼び出す部分で、引数が合わないというエラーが出ています。
error
File "C:\Users\mm05162\WebApp\patent\dbmodels.py", line 74, in __init__ data = self._url_perse(url) TypeError: _url_perse() takes 1 positional argument but 2 were given
#質問内容
引数の書き方としては、間違ってはいないと認識しています。
メソド定義時は def Function(self,argc) で 2つの引数を定義
内部で呼ぶときは a=self.function(argc) で 1つの引数で良い
何故かエラーとなり、ここで躓いています。
すみませんが、お知恵を拝借祖せていただきたいと思います。
python
database.py from sqlalchemy import create_engine from sqlalchemy.orm import scoped_session,sessionmaker from sqlalchemy.ext.declarative import declarative_base import os import pdb database_file = os.path.join(os.path.abspath(os.path.dirname(__file__)),'data.db') #SQLITE engine = create_engine('sqlite:///'+database_file,convert_unicode=True,echo=True) db_session = scoped_session( sessionmaker( autocommit=False, autoflush = False, bind =engine ) ) Base = declarative_base() Base.query = db_session.query_property() def init_db(): import patent.dbmodels Base.metadata.create_all(bind=engine)
python
dbmodels.py from sqlalchemy import Column , Integer ,String , Boolean from patent.database import Base import requests import json import pdb from bs4 import BeautifulSoup import pandas as pd import os from pyquery import PyQuery urll = 'https:****************' categories = [("BIJ",1), ("IPC",2), ("FT",3), ("ABJ",4), ("CLJ",5), ("DEJ",6), ("FIELD",7), ("BACKGROUND",8), ("SUBJECT",9), ("MEANS",10), ("OPERATION",11), ("EFFECT",12), ("EDJ",13), ("DRJ",14)] class MapiosMaster(Base): #テーブルの設定 Mapiosマスタ __tablename__ = "Mapios_maseter" #Column情報の設定 patent_number = Column(String,primary_key=True) BIJ = Column(String) # IPC = Column(String) # FT= Column(String) ABJ= Column(String) # CLJ= Column(String) # DEJ= Column(String) # FIELD= Column(String) # BACKGROUND= Column(String) # SUBJECT= Column(String) # MEANS= Column(String) # OPERATION= Column(String) # EFFECT= Column(String) # EDJ= Column(String) # DRJ= Column(String) # def _url_perse(self,url): pq = PyQuery(url) flg = False txt = "" stri = {} num = 0 for x in pq.items('td'): for y in x.items('a'): try: k = y.attr('name') if k in categories.keys() :#'record start' if flg == False: flg = True else: stri[title]=txt txt = "" title = k del categories[k] num = num + 1 except: break if flg == True: txt = txt + x.text() return stri def __init__(self,url=None,patent_number=None): data = self._url_perse(url) self.patent_number= patent_number self.BIJ= data["BIJ"] self.IPC= data["IPC"] self.FT= data["FT"] self.ABJ= data["ABJ"] self.CLJ= data["CLJ"] self.DEJ= data["DEJ"] self.FIELD= data["FIELD"] self.BACKGROUND= data["BACKGROUND"] self.SUBJECT= data["SUBJECT"] self.MEANS= data["MEANS"] self.OPERATION= data["OPERATION"] self.EFFECT= data["EFFECT"] self.EDJ= data["EDJ"] self.DRJ= data["DRJ"]
まだ回答がついていません
会員登録して回答してみよう