#内容
クラスのコンストラクタで、URLを引数にしてHTMLをパースして、これをDBに入れる処理を書いています。
#不具合
クラスの中から、クラスを呼び出す部分で、引数が合わないというエラーが出ています。
error
1 File "C:\Users\mm05162\WebApp\patent\dbmodels.py", line 74, in __init__ 2 data = self._url_perse(url) 3TypeError: _url_perse() takes 1 positional argument but 2 were given
#質問内容
引数の書き方としては、間違ってはいないと認識しています。
メソド定義時は def Function(self,argc) で 2つの引数を定義
内部で呼ぶときは a=self.function(argc) で 1つの引数で良い
何故かエラーとなり、ここで躓いています。
すみませんが、お知恵を拝借祖せていただきたいと思います。
python
1database.py 2from sqlalchemy import create_engine 3from sqlalchemy.orm import scoped_session,sessionmaker 4from sqlalchemy.ext.declarative import declarative_base 5import os 6import pdb 7 8database_file = os.path.join(os.path.abspath(os.path.dirname(__file__)),'data.db') 9#SQLITE 10engine = create_engine('sqlite:///'+database_file,convert_unicode=True,echo=True) 11db_session = scoped_session( 12 sessionmaker( 13 autocommit=False, 14 autoflush = False, 15 bind =engine 16 ) 17) 18Base = declarative_base() 19Base.query = db_session.query_property() 20 21def init_db(): 22 import patent.dbmodels 23 Base.metadata.create_all(bind=engine) 24
python
1dbmodels.py 2 3from sqlalchemy import Column , Integer ,String , Boolean 4from patent.database import Base 5 6import requests 7import json 8import pdb 9from bs4 import BeautifulSoup 10import pandas as pd 11import os 12from pyquery import PyQuery 13 14urll = 'https:****************' 15categories = [("BIJ",1), 16 ("IPC",2), 17 ("FT",3), 18 ("ABJ",4), 19 ("CLJ",5), 20 ("DEJ",6), 21 ("FIELD",7), 22 ("BACKGROUND",8), 23 ("SUBJECT",9), 24 ("MEANS",10), 25 ("OPERATION",11), 26 ("EFFECT",12), 27 ("EDJ",13), 28 ("DRJ",14)] 29 30class MapiosMaster(Base): 31 #テーブルの設定 Mapiosマスタ 32 __tablename__ = "Mapios_maseter" 33 #Column情報の設定 34 patent_number = Column(String,primary_key=True) 35 BIJ = Column(String) # 36 IPC = Column(String) # 37 FT= Column(String) 38 ABJ= Column(String) # 39 CLJ= Column(String) # 40 DEJ= Column(String) # 41 FIELD= Column(String) # 42 BACKGROUND= Column(String) # 43 SUBJECT= Column(String) # 44 MEANS= Column(String) # 45 OPERATION= Column(String) # 46 EFFECT= Column(String) # 47 EDJ= Column(String) # 48 DRJ= Column(String) # 49 50 def _url_perse(self,url): 51 pq = PyQuery(url) 52 flg = False 53 txt = "" 54 stri = {} 55 num = 0 56 for x in pq.items('td'): 57 for y in x.items('a'): 58 try: 59 k = y.attr('name') 60 if k in categories.keys() :#'record start' 61 if flg == False: 62 flg = True 63 else: 64 stri[title]=txt 65 txt = "" 66 title = k 67 del categories[k] 68 num = num + 1 69 except: 70 break 71 if flg == True: 72 txt = txt + x.text() 73 return stri 74 75 def __init__(self,url=None,patent_number=None): 76 data = self._url_perse(url) 77 self.patent_number= patent_number 78 self.BIJ= data["BIJ"] 79 self.IPC= data["IPC"] 80 self.FT= data["FT"] 81 self.ABJ= data["ABJ"] 82 self.CLJ= data["CLJ"] 83 self.DEJ= data["DEJ"] 84 self.FIELD= data["FIELD"] 85 self.BACKGROUND= data["BACKGROUND"] 86 self.SUBJECT= data["SUBJECT"] 87 self.MEANS= data["MEANS"] 88 self.OPERATION= data["OPERATION"] 89 self.EFFECT= data["EFFECT"] 90 self.EDJ= data["EDJ"] 91 self.DRJ= data["DRJ"] 92
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/10 07:20