2017-07-12 11 views
1

私は数字の中間ビットに 'https://projecteuler.net/problem=8'を解析しようとしています。それはによってそれを選択するために、別のクラスを持っていないので、私は段落を分離するためにBeautifulSoupとクラスなしでHTMLを解析する(単なる段落)

r = requests.get('https://projecteuler.net/problem=8') 
data = r.text 
soup = BeautifulSoup(data, "lxml") 
[para1, para2, para3] = (soup.find_all('p')) 

を使用しているが、これはそこに余分なジャンク(<p> and <br>)の多くを残します。それをすべてクリアするコマンドはありますか?私が現在使用しているよりも分割を行うためのより良いコマンドがありますか? Pythonで多くのWebをクロールしたことはありません...

+0

DOCTYPEは 'html'が、あなたはおそらく '' 'ではなく "lxmlの"'のhtml.parser''を使用したいと思うです。また、一度あなたがそのテーブルを持っていれば、あなたの理想的な出力は何ですか? (NumPy配列か、単にブロックを出力したいのですか?) –

答えて

2

soup.find_allは、htmlタグを含むhtmlノードのセットを返します。ノードからテキストを抽出する場合は、各ノードで.textを使用できます。 para2でこれを適用し、提供します:

para2.text.split() 

#['73167176531330624919225119674426574742355349194934', 
# '96983520312774506326239578318016984801869478851843', 
# '85861560789112949495459501737958331952853208805511', 
# '12540698747158523863050715693290963295227443043557', 
# ... 
+2

1000桁の数値を返します。 'int( ''。join(para2.text.split()))'。 –

+1

@ブラッドソロモン私はそれぞれの行が個々の数字だと思った。 @JordanAustinあなたが単一の数字を望む場合、 'para2.text.replace( '\ n'、 '')'も同様に働きます。 – Psidom

関連する問題