子タグの特定のグループが完全に解析されないという問題が発生しています。私はこれと同じロジックを他のタグに従っていますが、私が望むタグの最初のエントリ以外のすべてをスキップすることはできません。私print(data)
は、各反復の後に、それは私だけ、私たちすべての下の各国とメイン分類の最初のエントリタグを与えたらPythonがBeautifulSoupで解析中にXML子ノードをスキップする
for xml_string in separated_xml(infile):
soup = BeautifulSoup(xml_string, "lxml")
us_grant = soup.findAll("us-patent-grant")
with open('./output.csv', 'ab+') as f:
writer = csv.writer(f, dialect = 'excel')
for info in us_grant:
data = []
us_class_search = soup.findAll("us-field-of-classification-search")
for item2 in us_class_search:
if item2.find("classification-national"):
country_search = item2.find("country")
main_class_search = item2.find("main-classification")
data.append((country_search).text)
data.append((main_class_search).text)
print(data)
:私の現在のスクリプトの基本的なスニペットは次のようになります--patent-grant親;しかし、もっと多くがあります。私はそれを取る場合でも、それはまだITEM2ループため同じことを実行するためITEM2の文が正常にフォロースルーしない場合ことを知っている
<us-field-of-classification-search>
<classification-national>
<country>US</country>
<main-classification>D 1100-130</main-classification>
<additional-info>unstructured</additional-info>
</classification-national>
<classification-national>
<country>US</country>
<main-classification>D 1199</main-classification>
</classification-national>
<classification-national>
<country>US</country>
<main-classification>426 5</main-classification>
</classification-national>
<classification-national>
<country>US</country>
<main-classification>426 76</main-classification>
</classification-national>
</us-field-of-classification-search>
:たとえば、これらのタグを持つXMLファイルは次のようになります方法;それぞれの下の最初のタグだけを見つけて追加します。これは、ループ自体が実行されず、各インスタンスを見つけ出し、最初のタグをすべてのものとして扱うループでなければならないことを意味します。
アイデア?私は論理に明白な欠陥を見ません。
あなたはXML自体を見たい場合、あなたはそれhere on USPTO
if文でこれを処理してはいけませんか?私は他の親タグと同じ型の解析を行い、if文は繰り返しタグのすべてのインスタンスが確実に収集されるようにします。私は同じファイルの別のタグのためにそれを使用し、それは動作します。 – HelloToEarth
'if'ステートメントはループを起こさせません。私はあなたが 'item2'ループが何回繰り返しているのか不明確だと思います。デバッガのコードをステップ実行して、何が起きているのかを確認します。 –
ありがとうございます。これは、item2.findAll( "classification-national")ループの 'for for items 'を単純に導入して、すべてのタグを取得したという問題でした。 – HelloToEarth