Я практикую свой веб выскабливание навыки на следующем веб-сайте: «http://web.californiacraftbeer.com/Brewery-Member»начинка BeautifulSoup недостающую информацию с «N/A» не работает
код, который я до сих пор находится ниже. Похоже, что я получаю правильный подсчет компании, но я получаю дубликаты строк в файле CSV, что, я думаю, происходит всякий раз, когда компания пропускает информацию. В нескольких частях моего кода я пытался обнаружить и заменить недостающую информацию текстом «N/A», но он не работает. Я предполагаю, что эта проблема может быть связана с функцией Zip(), но я не уверен, как ее исправить.
Любая помощь очень ценится!
"""
Grabs brewery name, contact person, phone number, website address, and email address
for each brewery listed on the website.
"""
import requests, csv
from bs4 import BeautifulSoup
url = "http://web.californiacraftbeer.com/Brewery-Member"
res = requests.get(url)
soup = BeautifulSoup(res.content, "lxml")
each_company = soup.find_all("div", {"class": "ListingResults_All_CONTAINER ListingResults_Level3_CONTAINER"})
error_msg = "N/A"
def scraper():
"""Grabs information and writes to CSV"""
print("Running...")
results = []
count = 0
for info in each_company:
try:
company_name = info.find_all("span", itemprop="name")
except Exception as e:
company_name = "N/A"
try:
contact_name = info.find_all("div", {"class": "ListingResults_Level3_MAINCONTACT"})
except Exception as e:
contact_name = "N/A"
try:
phone_number = info.find_all("div", {"class": "ListingResults_Level3_PHONE1"})
except Exception as e:
phone_number = "N/A"
try:
website = info.find_all("span", {"class": "ListingResults_Level3_VISITSITE"})
except Exception as e:
website = "N/A"
for company, contact, phone, site in zip(company_name, contact_name, phone_number, website):
count += 1
print("Grabbing {0} ({1})...".format(company.text, count))
newrow = []
try:
newrow.append(company.text)
except Exception as e:
newrow.append(error_msg)
try:
newrow.append(contact.text)
except Exception as e:
newrow.append(error_msg)
try:
newrow.append(phone.text)
except Exception as e:
newrow.append(error_msg)
try:
newrow.append(site.find('a')['href'])
except Exception as e:
newrow.append(error_msg)
try:
newrow.append("[email protected]" + company.text.replace(" ", "").lower() + ".com")
except Exception as 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()
Awesome, что исправили проблему, спасибо! –