このプロジェクトでは、データベースからデータをスクラップし、このデータをスプレッドシートにエクスポートしてさらに分析することを試みています。BeautifulSoupをCSVにエクスポートします。スクラップ+列にイメージ値を含める
私のコードはほとんどの場合うまく機能しているようですが、最後のビットになると、CSVにエクスポートされます。私は運がないです。この質問は何度か尋ねられましたが、回答はさまざまなアプローチに合わせているようですが、私はその答えに順応する運を持っていませんでした。
私のコードは以下の通りです:
from bs4 import BeautifulSoup
import requests
import re
url1 = "http://www.elections.ca/WPAPPS/WPR/EN/NC?province=-1&distyear=2013&district=-1&party=-1&pageno="
url2 = "&totalpages=55&totalcount=1368&secondaryaction=prev25"
date1 = []
date2 = []
date3 = []
party=[]
riding=[]
candidate=[]
winning=[]
number=[]
for i in range(1, 56):
r = requests.get(url1 + str(i) + url2)
data = r.text
cat = BeautifulSoup(data)
links = []
for link in cat.find_all('a', href=re.compile('selectedid=')):
links.append("http://www.elections.ca" + link.get('href'))
for link in links:
r = requests.get(link)
data = r.text
cat = BeautifulSoup(data)
date1.append(cat.find_all('span')[2].contents)
date2.append(cat.find_all('span')[3].contents)
date3.append(cat.find_all('span')[5].contents)
party.append(re.sub("[\n\r/]", "", cat.find("legend").contents[2]).strip())
riding.append(re.sub("[\n\r/]", "", cat.find_all('div', class_="group")[2].contents[2]).strip())
cs= cat.find_all("table")[0].find_all("td", headers="name/1")
elected=[]
for c in cs:
elected.append(c.contents[0].strip())
number.append(len(elected))
candidate.append(elected)
winning.append(cs[0].contents[0].strip())
import csv
file = ""
for i in range(0,len(date1)):
file = [file,date1[i],date2[i],date3[i],party[i],riding[i],"\n"]
with open ('filename.csv','rb') as file:
writer=csv.writer(file)
for row in file:
writer.writerow(row)
本当に - 任意のヒントをいただければ幸いです。どうもありがとう。
*第2部:もう一つの質問:「優勝者」が常に最初に登場したと思ったので、テーブルに表示される最初の名前を選択するだけで、しかし、そうではありません。 候補が選出されたかどうかは、最初の列に画像形式で格納されます。どのように私はこれを掻き集めてスプレッドシートに保存するのですか? それは次のように> < TD見出しの下に位置しています:
< img src="/WPAPPS/WPR/Content/Images/selected_box.gif" alt="contestant won this nomination contest" >
私はブールソート尺度のいくつかの並べ替えをしようとするためのアイデアを持っていたが、私は実装する方法がわからないと思います。ありがとうございます* 更新:この質問は別の投稿hereになりました。
あなたは現在 'open( 'filename.csv'、 'rb')'を持っていますので、ファイルを 'open( 'filename.csv'、 'wb')'として書くべきです。 –