HTMLテーブルを解析してCSVに書き込もうとしています。私が働いているコードが、値を持つテーブル内の各セルにb'<value>'
を返し、nullであるテーブル内の各セルにb''
を返します。なぜ誰がこのことになるのか知っていますか?BeautifulSoupを使用してHTMLテーブルを解析して各セルのb 'を返します
は残念ながら、問題のURLは、パブリックインターネット経由で到達可能ではありませんが、ここではそれなしでレビューのために私のコードです:
from bs4 import BeautifulSoup
import urllib
import csv
import time
url = <not accessible over public internet>
html = urllib.request.urlopen(url).read()
soup = BeautifulSoup(html, "html.parser")
table = soup.select_one("table")
headers = [th.text.encode("utf-8") for th in table.select("tr th")]
with open("test_" + time.strftime("%Y%m%d_%H%M%S") + ".csv", "w") as f:
wr = csv.writer(f)
wr.writerow(headers)
wr.writerows([[td.text.encode("utf-8") for td in row.find_all("td")] for row in table.select("tr + tr")])
最後に、ここで私が話している出力のスクリーンショットの例です。 (敏感なものを編集から生じる醜を許し。)これ
ありがとう、null値はすべて削除されましたが、null以外の値はまだ ''ではなく 'b '' 'にラップされます。私の "Example_Output"スクリーンショットを見てください。 –
これは、データが文字列ではないことを示すバイトリテラルです(UTF-8にデータをエンコードしたために発生します)。Pythonは比較などでそのデータを無視するので、心配する必要はありません。 – kmcodes
素晴らしい!ありがとう。 –