1

BeautifulSoup を使用して Web パーサーを作成しています。で生成された行のリストを作成し、行ごとbs.findAll(text=True)に分割してそこにロジックを適用します。html_payload任意の Web ページです。

これまでのところ、コードは機能しますが、あまりきれいではなく、もっと優れたエレガントな書き方があるに違いないと考えさせられます。

    data_to_parse = BeautifulSoup(html_payload)
    lines_to_parse = []

    d = data_to_parse.findAll(text=True)
    for line in d:
        for line2 in line.strip().split('\n'):
            if line2:
                lines_to_parse.append(line2)

    for line in lines_to_parse:
        pass # here's where I start analyzing results

これを解決するより良い方法を提案できる人はいますか?

4

2 に答える 2

1

すべてのテキストを一度に取得して、行に分割するだけです。

data_to_parse = BeautifulSoup(html_payload)
for line in data_to_parse.get_text().split("\n"):
    pass  # ... do something
于 2013-08-23T22:11:11.257 に答える
1

リスト内包表記を利用できます:

lines_to_parse = [line2 for line in data_to_parse.findAll(text=True) for line2 in line.strip().split('\n') if line2]

または、実際に収集と分析のステップを組み合わせることができます。

d = data_to_parse.findAll(text=True)
for line in d:
     for line2 in line.strip().split('\n'):
         if line2:
             # analyze here

または、 をあまり使用していないことを念頭に置いてBeautifulSoupxmltodictを使用すると、データをリストに収集するのに役立つ場合があります。

それが役立つことを願っています。

于 2013-08-23T22:11:22.080 に答える