2017-10-17 4 views
0

내 목표는 웹 사이트의 데이터를 구문 분석하고 해당 데이터를 Excel에서 열도록 포맷 된 텍스트 파일에 저장하는 것입니다. 나는 많은 시도를했기 때문에BeautifulSoup을 사용하여 데이터를 구문 분석하고 pandas로 데이터 sotring DataFrame to_csv

from bs4 import BeautifulSoup 
import requests 
import pprint 
import re 
import pyperclip 
import json 
import pandas as pd 
import csv 

pag = range (2,126) 
out_file=open('bestumbrellasoffi.txt','w',encoding='utf-8') 
with open('bestumbrellasoffi.txt','w', encoding='utf-8') as file: 
    for x in pag: 
    #iterate pages 
     url = 'https://www.paginegialle.it/ricerca/lidi%20balneari/italia/p- 
     '+str(x)+'?mr=50' 
     response = requests.get(url) 
     soup = BeautifulSoup(response.content, "html.parser") 
      #parse data 
     for i,j,k,p,z in zip(soup.find_all('span', attrs= 
{'itemprop':'name'}),soup.find_all('span', attrs= 
{'itemprop':'longitude'}),soup.find_all('span', attrs= 
{'itemprop':'latitude'}),soup.find_all('span', attrs={'class':'street- 
address'}), soup.find_all('div', attrs={'class':'tel elementPhone'})): 
      info=i.text,j.text,k.text,p.text,z.text 
      #check if data is good 
      print(url) 
      print (info) 
      #create dataframe 
      raw_data = { 'nome':[i],'longitudine':[j],'latitudine': 
      [k],'indirizzo':[p],'telefono':[z]} 
      print(raw_data) 
      df=pd.DataFrame(raw_data, columns = 
       ['nome','longitudine','latitudine','indirizzo','telefono']) 
      df.to_csv('bestumbrellasoffi.txt') 


out_file.close() 

는 모든 모듈이 있습니다 다음은 코드입니다. 그렇게 인쇄 (정보)의 출력은 is

인쇄 (raw_data) is

편집

이의 출력은 코드 검토하고 완벽하게 작동합니다.

인내심을 가져 주셔서 감사합니다.

from bs4 import BeautifulSoup 

오기 요청 수입 pprint 가져 오기 pyperclip 수입 JSON PD 오기 CSV로 수입 팬더 재

PAG = 'bestumbrellasoffia.txt'(열기와 범위 (2126) ' a ', encoding ='utf-8 ')을 파일로 저장합니다.

for x in pag: 
#iterate pages 
    url = 'https://www.paginegialle.it/ricerca/lidi%20balneari/italia/p-'+str(x)+'?mr=50' 
    response = requests.get(url) 
    soup = BeautifulSoup(response.content, "html.parser") 
    raw_data = { 'nome':[],'longitudine':[],'latitudine':[],'indirizzo':[],'telefono':[]} 
    df=pd.DataFrame(raw_data, columns = ['nome','longitudine','latitudine','indirizzo','telefono']) 
     #parse data 
    for i,j,k,p,z in zip(soup.find_all('span', attrs={'itemprop':'name'}),soup.find_all('span', attrs={'itemprop':'longitude'}),soup.find_all('span', attrs={'itemprop':'latitude'}),soup.find_all('span', attrs={'class':'street-address'}), soup.find_all('div', attrs={'class':'tel elementPhone'})): 
     inno=i.text.lstrip() 
     ye=inno.rstrip() 
     info=ye,j.text,k.text,p.text,z.text 
     #check if data is good 
     print(info) 
     #create dataframe 
     raw_data = { 'nome':[i],'longitudine':[j],'latitudine':[k],'indirizzo':[p],'telefono':[z]} 
     #try dataframe 
     #print(raw_data) 
     file.write(str(info)+"\n") 
+0

안녕하십니까. 질문은 무엇입니까? 시간이 걸릴 경우 [ask]와 여기에 포함 된 링크를 읽으십시오. – wwii

+0

@wwii 감사합니다. 불확실한 점에 대해 사과드립니다. –

답변

0

새 데이터 프레임 for 루프 반복마다.

루프 밖에서 초기화해야하며 루프의 append()를 사용하여 각 데이터 행을 추가해야합니다.

+0

감사합니다. 나는 코드 작업으로 질문을 편집하고있다 :) –

관련 문제