Я пытаюсь извлечь URL-адреса (я включил несколько из них ниже) из файла 'YP_LA_Remodel_urls.csv
, очистить их, а затем экспортировать результаты в Yp_LA_Remodel_Info.csv
.
Если я возьму один URL (не из CSV) и очистить его, то он работает нормально.Это просто попытка сделать это в массовом масштабе, от которого я зацикливаюсь.Я создал свой список информации, которую мне нужно извлечь.
Я использую скрипт из другого созданного мною сканирования, но, похоже, он к нему не относится.Я питон нуб, так что иди спокойно.
Любая помощь и / или предложения приветствуются.
пример URL:
https://www.yellowpages.com/search?search_terms=remodeling&geo_location_terms=Los%20Angeles%2C%20CA&page=1
https://www.yellowpages.com/search?search_terms=remodeling&geo_location_terms=Los%20Angeles%2C%20CA&page=2
скрипт:
import csv
from urllib.request import urlopen
import pandas as pd
from bs4 import BeautifulSoup
from email import encoders
import time
import os
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
import requests
def license_exists(soup):
contents = []
with open('YP_LA_Remodel_urls.csv','r') as csvf:
urls = csv.reader(csvf)
for url in urls:
if soup(class_="next ajax-page"):
return True
else:
return False
records = []
with open('YP_LA_Remodel_urls.csv') as f_input, open('Yp_LA_Remodel_Info.csv', 'w', newline='') as f_output:
csv_input = csv.reader(f_input)
csv_output = csv_output_to_csv(f_output, fieldnames=[name for name, result in records])
csv_output.writeheader()
for url in csv_input:
r = requests.get(url[0]) # Assume the URL is in the first column
soup = BeautifulSoup(r.text, "html.parser")
results = soup.find_all('div', attrs={'class':'info'})
csv_output.to_csv('f_output', index=False, encoding='utf-8')
for result in results:
biz_name = result.find('span', attrs={'itemprop':'name'}).text if result.find('span', attrs={'itemprop':'name'}) is not None else ''
biz_phone = result.find('div', attrs={'itemprop':'telephone'}).text if result.find('span', attrs={'itemprop':'telephone'}) is not None else ''
biz_address = result.find('span', attrs={'itemprop':'streetAddress'}).text if result.find('span', attrs={'itemprop':'streetAddress'}) is not None else ''
biz_city = result.find('span', attrs={'itemprop':'addressLocality'}).text if result.find('span', attrs={'itemprop':'addressLocality'}) is not None else ''
biz_zip = result.find('span', attrs={'itemprop':'postalCode'}).text if result.find('span', attrs={'itemprop':'postalCode'}) is not None else ''
records.append((biz_name, biz_phone, biz_address, biz_city, biz_zip))
df = pd.DataFrame(records, columns=['biz_name', 'biz_phone', 'biz_address', 'biz_city', 'biz_zip'])