Beautiful Soup Python スクレイピング

【Python】BeautifulSoupでhtml内の「&」「<」「>」などのエスケープ記号を元に戻す方法

この記事は約3分で読めます。

 

こんにちは、ミナピピン(@python_mllover)です!

 

beautifulsoupのreplace_with()でタグを変換する際に<などが入っていると関数を実行した際にエスケープされてlt;みたいな特殊文字に変換されてしまう際の解決法をメモっておきたいと思います。

 

import requests
from bs4 import BeautifulSoup
import re
import pandas as pd
from xml.sax.saxutils import unescape

headers = {
    'User-Agent':'Mozilla/5.0'
}

#対象のサイトURL
url = 'https://swallow.5ch.net/test/read.cgi/livejupiter/1627502377/'

#URLリソースを開く
res = requests.get(url, headers=headers)
unker_data = []
main_data = []
unker_number = []
#インスタンスの作成
soup = BeautifulSoup(res.content, "html.parser")
post = soup.find_all('div', class_='post')[3]
text = post.find_all('span', class_='escaped')[0]
try:
    for tag in text.find_all('a', class_='image'):
        tag.replace_with('<img src="' + tag.text + '" width="400" height="400"></img>')
        
except:
    pass
print(post)

 

 

スポンサーリンク
スポンサーリンク

解決法

 

解決法はxml.sax.saxutilsのunescape()で置換することで元の記号に戻せます。

 

from xml.sax.saxutils import unescape
text = '「&amp;」「&lt;」「&gt;」' 
print(unescape(text))  # => '& < >'

 

 

 

参照:https://www.takasay.com/entry/2015/07/07/095739

 

 

 


プログラミング・スクレイピングツール作成の相談を受け付けています!

クラウドワークス・ココナラ・MENTAなどでPython・SQL・GASなどのプログラミングに関する相談やツール作成などを承っております!

過去の案件事例:

  • Twitter・インスタグラムの自動化ツール作成
  • ウェブサイトのスクレイピングサポート
  • ダッシュボード・サイト作成
  • データエンジニア転職相談

これまでの案件例を見る

キャリア相談もお気軽に!文系学部卒からエンジニア・データサイエンティストへの転職経験をもとに、未経験者がどう進むべきかのアドバイスを提供します。


スポンサーリンク
/* プログラミング速報関連記事一覧表示 */
ミナピピンの研究室

コメント

  1. より:

    # => ‘& ‘
    ただしくは
    # => ‘「&」 「」’
    ではありませんか?

タイトルとURLをコピーしました