ウェブサイトのページコンテンツのテキストのみを取得します。私はそれを行うためにBeautifulSoupを使用しています。BeautifulSoupを使用してウェブサイトからテキストを抽出する
私のような、以下の機能を書いた:
def textClean(text):
""" This function takes the input text and cleans the HTML tags from it
"""
from bs4 import BeautifulSoup
souptext=BeautifulSoup(text)
print text
print souptext.get_text()
をこれも、元のHTMLソースコードと、そのテキストを印刷します。しかし、ここで
は私が得るサンプル出力です:
HTML出力:(最初のprint文)
<p><img style="float:right;" src="http://static4.businessinsider.com/image/56eb68e791058427008b72e5-907-680/5550538407_c22babffba_b.jpg" alt="radar" data-mce-source="US Navy" data-mce-caption="Mineman Seaman Charles Bryan watches for contacts on the SPA 256 radar while on watch in the Combat Directive Center aboard the mine countermeasures ship USS Ardent (MCM 12)." data-link="https://www.flickr.com/photos/usnavy/5550538407/in/photolist-9stXG4-e6i1uU-e6i1tE-dLSiBQ-c9jmg7-f5LbtS-r9jw69-efvjaN-duNiV6-efpeEP-eW8Dg9-q1nZiQ-en2osX-duNiTa-njkj3s-eep3Mb-kUdU5g-9d7u4E-eeoYiC-fr2CuX-axHdte-fsVD3D-drHPeJ-9rAVac-cnMSiW-9vVcbN-enB31b-f23pKF-aBjveY-9rEhwY-9u6GZy-9rDT9L-bojAAh-9uiNiU-9AJSrB-9rFxwQ-bjkanD-aefpN9-ea2WB2-ea2WyR-a1tUoa-9rAUXZ-ea8Bf9-9Wm3Z8-9rNE7o-enB1YY-9rAUHX-ea2WpF-aNR7eD-9NX2pq" /><span class="source">US Navy</span></p><p>The United States has seen Chinese activity around a reef that China seized from the Philippines nearly four years ago that could be a precursor to more land reclamation in the disputed South China Sea, the U.S. Navy chief said on Thursday.</p>
第二のtet出力:(第2 print文)
US NavyThe United States has seen Chinese activity around a reef that China seized from the Philippines nearly four years ago that could be a precursor to more land reclamation in the disputed South China Sea, the U.S. Navy chief said on Thursday.
あなたはタグ
<span class="source">US Navy</span></p>
間のテキストはまた、我々はテキストを元の記事の一部ではないことを元の記事(下記リンク)を参照してくださいかのように私はしたくないその抽出なっている表示された場合。
私はget_text()がすべてのテキストを取得することがわかっているので、段落タグの間のテキストを抽出するように指定できますが、spanタグ内のテキストは一部ではないと思うので、元のテキストの。
ここに私が使用した記事へのリンクがあります。
EDIT1:
このような出力を取得:各列はUnicodeに変換されます。
Spark DataFrameの各レコードをマップし、データフレームの「desc」列からHTMLタグを消去するために作成したマッピング関数コードを示します。
def htmlParsing(x):
""" This function takes the input text and cleans the HTML tags from it
"""
from bs4 import BeautifulSoup
#print text
row=x.asDict()
textcleaned=''
souptext=BeautifulSoup(row['desc'])
#souptext=BeautifulSoup(text)
p_tags=souptext.find_all('p')
for p in p_tags:
if p.string:
#textcleaned+=p.string
ret_list= (int(row['id']),(row['title']),(p.string))
return ret_list
#print p.string
sdf_cleaned=sdf_rss.map(htmlParsing)
sdf_cleaned.take(4)
あなたは銀行の窓口や顧客サービス担当者を扱う嫌いu'If [(-33753621、スコットランドの u'Royal銀行は、その後、 、「)RBS(あなたの銀行の問題を解決できるロボットをテストしていますスコットランドのロイヤルバンクにはあなたのための解決策があるかもしれません。)、 (-761323061、 u'Teen sextingは児童ポルノ法のオーバーホールを促しています '、 u'Plantティーンセックスは政治家や法執行当局を児童ポルノのために学生を起訴し、離婚させることの間にある種の合法的な中間地位を見つけようと努力している」)、 (1405376555、中国は南シナ海で新しいプロジェクトを建設し始めた。 米国では、中国が約4年前にフィリピンから押収したサンゴ礁周辺の中国の活動を見ている。紛争を起こした南シナ海での土地埋立地の増強を発表した。')、 (-1882022821、 )酔っ払いの法律は、酔っ払いの死亡率を減らしている。' u'Reuters Health - 酔っ払いドライバーに自動車のイグニッションインターロック装置を設置する必要がある国は、15%これらの要件のない状態、研究のショーに比べてアルコール関連のクラッシュ死亡インチ ')]
これは良い答えです。しかし、私は文字列を印刷したくありません。私はそれをデータセットとして保存したい。しかし、私がそれを元に戻すと、私はunicode 'u'がそれに追加され、普通の文字列ではないということになります。どのようにそれらを取り除くのですか? – Baktaawar
質問にデータコードを保存することはできますか? –
plsを編集します。 – Baktaawar