HTMLをBeautifulSoupで解析してコードを出力するコードがあります。 Here is the source code(興味があればリンク要旨):CSVに書き込むと、各文字に独自のセルが表示されます
import csv
import requests
from bs4 import BeautifulSoup
import lxml
r = requests.post('https://opir.fiu.edu/instructor_evals/instr_eval_result.asp', data={'Term': '1175', 'Coll': 'CBADM'})
soup = BeautifulSoup(r.text, "lxml")
tables = soup.find_all('table')
print(tables)
print(tables)
CSVにエクスポートする前に、私のコードの出力は次のようになります。
Question No Response Excellent Very Good
Good Fair Poor
Description of course objectives and assignments
0.0% 76.1% 17.4% 6.5% 0.0%
0.0%
Communication of ideas and information 0.0%
78.3% 17.4% 4.3% 0.0% 0.0%
私は本当にこの出力を好きで、CSVにエクスポートしたいです、
writer = csv.writer(open("C:\\Temp\\output_file.csv", 'w'))
for table in tables:
rows = table.find_all("tr")
for row in rows:
cells = row.find_all("td")
if len(cells) == 7: # this filters out rows with 'Term', 'Instructor Name' etc.
for cell in cells:
print(cell.text + "\t", end="")
writer.writerow(cell.text)
print("") # newline after each row
print("-------------") # table delimiter
残念ながら、それぞれの単一のユニークな文字や文字は、独自のセルを有するでこのコードの結果:
私は、次を追加しましただから私の質問はこれです:それは適切にそれぞれすべての文字のための新しいセルを追加することなく、CSVファイルへの出力をエクスポートするようにどのように私はこのコードを修正することができますか?私はそれがなぜこれをしているのか正確にはわかりません。また、最初のテーブルをエクスポートして、コード内の他のすべてのデータを無視するように見えるだけです。
https://imgur.com/a/3Sq4bすごいです!今はもっと良く見えます。列Bの分類(良い、公正、悪いなど)の横にパーセンテージを得るための簡単な方法はありますか? –
@JSowwyはい、それを行う方法があります。ラベルと%sを別々のリストにロードする必要があります。次に、あなたは 'zip'して各ペアでwriterowを呼び出します。コードが必要な場合は、私の答えを受け入れ、新しい質問を開いてください。ありがとう。 –
私はあなたの答えを受け入れましたが、私はもうしばらく質問をすることはできません。 「最後の質問をしてから0日後です。もう一度聞く前に4日待つようにお願いします。 –