をCSVファイルへの書き込み時に、ウェブサイト上のデータの欠落を占め:私はこれまで持っている「http://web.californiacraftbeer.com/Brewery-Member」PythonのBeautifulSoupは、私は、以下のウェブサイト上でスキルをこする私のウェブを練習しています
コードは以下の通りです。私は私がしたいフィールドを取得し、CSVに情報を書き込むことができるんだけど、各行の情報は、実際の会社の詳細と一致していません。たとえば、A社にはD社の連絡先名とE社の電話番号が同じ行に表示されます。
いくつかのデータは、特定の企業のために存在していないので、CSVに会社ごとに分離する必要がある行を記述するとき、どのように私はこのことを考慮することができますか? CSVへの書き込み時に、私は正しい企業のための正しい情報をつかんだということを確認するための最良の方法は何ですか?
"""
Grabs brewery name, contact person, phone number, website address, and email address
for each brewery listed.
"""
import requests, csv
from bs4 import BeautifulSoup
url = "http://web.californiacraftbeer.com/Brewery-Member"
res = requests.get(url)
soup = BeautifulSoup(res.content, "lxml")
company_name = soup.find_all(itemprop="name")
contact_name = soup.find_all("div", {"class": "ListingResults_Level3_MAINCONTACT"})
phone_number = soup.find_all("div", {"class": "ListingResults_Level3_PHONE1"})
website = soup.find_all("span", {"class": "ListingResults_Level3_VISITSITE"})
def scraper():
"""Grabs information and writes to CSV"""
print("Running...")
results = []
count = 0
for company, name, number, site in zip(company_name, contact_name, phone_number, website):
print("Grabbing {0} ({1})...".format(company.text, count))
count += 1
newrow = []
try:
newrow.append(company.text)
newrow.append(name.text)
newrow.append(number.text)
newrow.append(site.find('a')['href'])
except Exception as e:
error_msg = "Error on {0}-{1}".format(number.text,e)
newrow.append(error_msg)
results.append(newrow)
print("Done")
outFile = open("brewery.csv","w")
out = csv.writer(outFile, delimiter=',',quoting=csv.QUOTE_ALL, lineterminator='\n')
out.writerows(results)
outFile.close()
def main():
"""Runs web scraper"""
scraper()
if __name__ == '__main__':
main()
ご協力いただきありがとうございます。
特定の企業はその後、ヌル文字列としてそのデータを格納するために、CSVに書き込んでいる間、それはその列をスキップするように、いくつかのデータは、(」「)が存在しない場合。 –