2017-10-20 44 views
0

J'ai données de beautifulsoup sous la forme de:python: excel: impression dans les colonnes puis lancez dans la ligne suivante

a 
b 
c 
d 
e 
f 

Je veux les obtenir dans Excel dans le format suivant:

a b c d e f g 
h i j k l m n 
o p q r s t u 
etc... 

quand je les imprime dans Excel.

Ceci est le code que j'ai actuellement:

import openpyxl 
from openpyxl import Workbook 
import requests 
from bs4 import BeautifulSoup 
for i in range (1,2): 
    url ="https:...." 
    response=requests.get(url,verify=False) 
    soup=BeautifulSoup(response.text) 
    g_data=soup.find_all("td",{"class"}) 
    results=[] 
    for item in g_data: 
      data=(item.text) 
      results.append(data) 
      wb=Workbook() 
      ws=wb.active 
      for row, i in enumerate(results): 
         columns_cell='A' 
         ws[column_cell+str(row+2)]=str(i) 
      wb.save("test.xlsx") 

Merci d'avance pour votre aide.

Code MIS À JOUR:

for i in range (1,3): 
url="https:.... .format(pagenum=i) 
response=requests.get(url) 
soup=BeautifulSoup(response.text) 
g_data=soup.find_all("td","class") 
row=[] 
wb=Workbook() 
ws=wb.active 
for idx, item in enumerate(g_data): 
    row.append(item.text) 
    if not idx % 7: 
     ws.append(row) 
     row=[] 
wb.save("test2.xlsx") 

UPDATED RESULTS PICTURE:

Enfin cela fonctionne:

for i in range (1,2) 
url="https:... " 
response=requests.get(url) 
soup=BeautifulSoup(response.text) 
g_data=soup.find_all("td",{"class"}) 
results=[] 
for item in g_data: 
    results.append(item.text) 
df=pd.DataFrame(np.array(results).reshape(20,7),columns("abcdefg")) 
writer=pd.ExcelWriter('test4.xlsx', engine='xlsxwriter') 
df.to_excel(writer, sheet_name='Sheet1') 
writer.save() 

Le problème avec celui-ci est que son remplaçant les résultats précédents. Encore un peu plus de travail à faire. mais les progrès :)

Répondre

0

On dirait que vous voulez quelque chose un peu comme ceci:

row = [] 
for idx, item in enumerate(g_data): 
    row.append(item.text) 
    if not idx % 6: # 7th element: 
     ws.append(row) 
     row = [] 
+0

Modifier votre question pour montrer les changements dans le code et ce que vous voyez le dans les cellules. –