2017-07-12 43 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 ...

+0

的DOCTYPE是'html',你會想可能使用''html.parser'',而不是' 「LXML」'。另外,一旦你有這個數字表,你的理想輸出是什麼? (NumPy數組,還是隻是想打印塊?) –

回答

2

soup.find_all返回一組包含html標籤的html節點;如果要從節點提取文本,則可以在每個節點上使用.text;在para2應用此,給出了:

para2.text.split() 

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

並返回1000位數字:'int(''。join(para2.text.split()))''。 –

+1

@BradSolomon良好的捕獲。我認爲每一行都是一個單獨的號碼。 @JordanAustin如果你想要一個數字,'para2.text.replace('\ n','')'也適用。 – Psidom