Невозможно записать табличное содержимое в файл Excel с помощью панд ExcelWriter - PullRequest
0 голосов
/ 30 июня 2019

Я создал скрипт на python, чтобы получить табличное содержимое с веб-страницы и написать то же самое в файле excel, используя pandas ExcelWriter.Табличные данные поступают правильно, но я не могу записать их в файл Excel.Я могу написать то же самое, используя openpyxl, но в случае с пандами ExcelWriter я застреваю.

Я пробовал:

import requests
import pandas as pd
from bs4 import BeautifulSoup
from pandas import ExcelWriter

link = "https://en.wikipedia.org/wiki/Comparison_of_Intel_processors"
result = []

res = requests.get(link)
soup = BeautifulSoup(res.text,"lxml")
for items in soup.select_one("table.wikitable").select("tr"):
    data = [item.get_text(strip=True) for item in items.select("th,td")]
    print(data)
    result+=data

df = pd.DataFrame(result)
writer = ExcelWriter('tabular_content.xlsx')
df.to_excel(writer,'Sheet1',index=False)
writer.save()

Чтобы избежать путаницы относительно того, чтоЯ получаю и то, что я хочу получить, я привел два примера, чтобы изобразить картинку.

Мой текущий подход может записать данные в один столбец, как показано ниже.

Processor
SeriesNomenclature
CodeName
Production Date
Supported Features (Instruction Set)
Clock Rate
Socket
Fabri-cation

Однако я хотел бы написать их следующим образом:

Processor   SeriesNomenclature  CodeName    Production Date Supported Features (Instruction Set)
4004            Nov. 15,1971    
8008    N/A N/A April 1972  N/A
8080    N/A N/A April 1974  N/A
8085    N/A N/A March 1976  N/A
8086    N/A N/A June 8, 1978    N/A
8088    N/A N/A June 1979   N/A
80286   N/A N/A Feb. 1982   N/A
i80386  DX, SX, SL  N/A 1985 - 1990 N/A
i80486  DX, SX, DX2, DX4, SL    N/A 1989 - 1992 N/A

PS Использование ExcelWriter является обязательным.

1 Ответ

0 голосов
/ 30 июня 2019

С ExcelWriter проблем не возникает, и в этом случае вам даже не понадобится BeautifulSoup. Просто прочитайте данные таким образом

    tables = pd.read_html("https://en.wikipedia.org/wiki/Comparison_of_Intel_processors")

    writer = ExcelWriter('tabular_content.xlsx')
    tables[0].to_excel(writer,'Sheet1',index=False)
    writer.save()

И, по крайней мере в моей системе, он создал файл Excel, как и ожидалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...