私は今この問題を解決していますが、解決策はありません。PythonでBeautifulSoupを使用して異なるデータを持つ繰り返しタグを使用してXMLファイルを解析する
pub_ref = soup.findAll("publication-reference")
with open('./output.csv', 'ab+') as f:
writer = csv.writer(f, dialect = 'excel')
for info in pub_ref:
pat_cite = soup.findAll("patcit")
for item in pat_cite:
if item.find("name"):
name = item.find("name").text
writer.writerow([name])
私は引用子ルート「pacit」の子どもたちを解析するスクリプトのこの部分親「出版・リファレンス」の:私はそうのように見える私のPythonスクリプトのスニペットを持っていますそれは、XMLファイル内で複数回アップ作物や次のようになります。
.
.
.
<us-references-cited>
<us-citation>
<patcit num="00001">
<document-id>
<country>US</country>
<doc-number>1589850</doc-number>
<kind>A</kind>
<name>Haskell</name>
<date>19260600</date>
</document-id>
</patcit>
<category>cited by applicant</category>
</us-citation>
<us-citation>
<patcit num="00002">
<document-id>
<country>US</country>
<doc-number>D134414</doc-number>
<kind>S</kind>
<name>Orme, Jr.</name>
<date>19421100</date>
</document-id>
</patcit>
<category>cited by applicant</category>
</us-citation>
<us-citation>
.
.
.
ドットがファイルがこれよりも大きく、親ルート「出版の参照を」表示されていないことを示しています。問題は、私のスクリプトは、多くの子どものうちの一つである、"名前"のルートだけを解析することです。そして、これは発明ごとに1つだけのエントリがあるが、倍数ではない根にはうまく機能します。
あなたは出力がそうのようなコラムダウンこれらの複数のpatcitの引用を示しせる作家、と見ることができるように、私はまた、CSVファイルでこれらを格納したい:
invention name country city .... patcit name1 patcit date1....
white space patcit name2 patcit date2....
white space patcit name2 patcit date3....
私はXMLファイルをここで見つけることができますhttps://bulkdata.uspto.gov/data/patent/grant/redbook/fulltext/2017/
私は複数の方法を試してきたと私はこれが初心者の問題だと思う任意の助けていただければ幸いです。
非常に役に立ちました。私のWindowsセットアップで実際のCSVがあなたのスクリプトを書いていない理由を理解できません。ファイル名をxmlのパスに置き換えても、何も得られません。 さらに、私が望むのは、これらのXMLで_ALL_タグを取得することだけです。それは大きな仕事です。私が微調整しなければならない反復の子どもたちがさらに増えています。しかし、アウトラインは一般的なルールとして役立っています。 – HelloToEarth
私はそれを理解しました、@ Dan-Dev。私は単にxmlからxml_stringへのスープ呼び出しを適切に読み取るために置き換えました。私はBSのテキストの解釈にいくつかの問題があったと思う。 – HelloToEarth
あなたはそれを理解してうれしいです。 xmlドキュメントをcsvドキュメントに変換したい場合は、XSLTを使用することを考えましたか? XSLTはちょうどこれのために設計されており、学ぶのは良いスキルであり、長期的にあなたの時間を節約することができます。 –