2017-10-17 7 views
0

私の目標は、Webサイトからデータを解析し、そのデータをExcelで開くようにフォーマットされたテキストファイルに保存することです。ここで コードです:BeautifulSoupでデータを解析し、pandasでデータをソートする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() 

私は多くの試みがなされているため、これらすべてのモジュールがあります。 そう(RAW_DATA)is

EDIT

印刷(情報)の出力is

プリントの出力は、これは、コードレビューし、完全に機能しています。

忍耐力に感謝します。

from bs4 import BeautifulSoup 

インポート要求 インポートPPRINT インポートインポートpyperclip インポートJSON PD インポートCSVとして インポートパンダ 再

PAG = 'bestumbrellasoffia.txt'(オープンと範囲(2,126) 」 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

ありがとうございました!私は、コードが動作している質問を編集しています:) –

関連する問題