Vinnaren i pepparkakshustävlingen!
2023-01-17, 22:15
  #1
Medlem
Hittade den här guiden:

https://medium.com/analytics-vidhya/...s-cbd305ca75fe

Även om jag inte prövat på den sida jag är intresserad av så verkar de som att den skapar hyfsat strukturerade tabeller. De är onekligen simpelt om man jämför med andra metoder med Selenium och Beautiful soup som jag också testa lite varstans med varierande framgång.

Men de ser ut som att de faktiskt kan funka. min kod ser ut så här:

import requests
import pandas as pd
from selenium import webdriver
from bs4 import BeautifulSoup
import csv
#url = 'https://pubs.rsc.org/en/content/articlelanding/2020/na/d0na00118j'
url = 'https://www.avanza.se/aktier/dagens-avslut.html/5444/midsona-b'


driver = webdriver.Chrome()
driver.get(url)
driver.implicitly_wait(5)

soup = BeautifulSoup(driver.page_source, 'lxml')
tables = soup.find_all('table')
dfs = pd.read_html(str(tables))
print(dfs[0])


Som sagt ser de hyfsat strukturerat ut i terminalen men jag vill ha in de hela i ett Excel dokument

Jag fick in printade rubriker i en CSV fil i förra vecka men mins exakt hur jag gjorde. Jag vill minnas att de inte va mycket svårare än så här:

dfs.to_csv(C:\print.data\tabel)

De fungerar naturligtvis inte. Så jag undrar om nån vet hur man gör?

*angående rubriken jag antar att terminalen alltid är ett mellansteg.
__________________
Senast redigerad av Zellberg 2023-01-17 kl. 22:37.
Citera
2023-01-19, 20:46
  #2
Medlem
Citat:
Ursprungligen postat av Zellberg
Hittade den här guiden:

https://medium.com/analytics-vidhya/...s-cbd305ca75fe

Även om jag inte prövat på den sida jag är intresserad av så verkar de som att den skapar hyfsat strukturerade tabeller. De är onekligen simpelt om man jämför med andra metoder med Selenium och Beautiful soup som jag också testa lite varstans med varierande framgång.

Men de ser ut som att de faktiskt kan funka. min kod ser ut så här:

import requests
import pandas as pd
from selenium import webdriver
from bs4 import BeautifulSoup
import csv
#url = 'https://pubs.rsc.org/en/content/articlelanding/2020/na/d0na00118j'
url = 'https://www.avanza.se/aktier/dagens-avslut.html/5444/midsona-b'


driver = webdriver.Chrome()
driver.get(url)
driver.implicitly_wait(5)

soup = BeautifulSoup(driver.page_source, 'lxml')
tables = soup.find_all('table')
dfs = pd.read_html(str(tables))
print(dfs[0])


Som sagt ser de hyfsat strukturerat ut i terminalen men jag vill ha in de hela i ett Excel dokument

Jag fick in printade rubriker i en CSV fil i förra vecka men mins exakt hur jag gjorde. Jag vill minnas att de inte va mycket svårare än så här:

dfs.to_csv(C:\print.data\tabel)

De fungerar naturligtvis inte. Så jag undrar om nån vet hur man gör?

*angående rubriken jag antar att terminalen alltid är ett mellansteg.

dfs är inte en dataframe utan en lista av dataframes. det borde fungera med exempelvis dfs[0].to_csv('C:\print.data\tabel') för att skriva den första dataframen till en csv-fil. Förslagsvis loopar du igenom listan för att exportera alla till csv-filer. Om du nu vill använda Excel för att titta på innehållet i filerna sedan så kan metoden to_excel användas i stället för to_csv.
Citera
2023-01-21, 14:01
  #3
Medlem
De ser rätt ok ut i csv filen. SÅ detta kan funka!

Men när försöker få in de i excell så stöter jag på detta:

Citat:

Verkar rimligt att lägga till "import excel" i koden

Men kommer detta upp i terminalen:

C:\test>python SOUP.PY
Traceback (most recent call last):
File "C:\test\SOUP.PY", line 8, in <module>
import excel
ModuleNotFoundError: No module named 'excel'

Nån som vet hur man fixar detta?
Citera
2023-01-23, 19:30
  #4
Medlem
Men vad är det du ska göra?

Hur kommer texten in till din terminal från början? Och varför vill du skrapa sysin eller sysout?

excel har ingen modul så du kan inte importera en modul du inte har. Använd Pandas för det du skall göra.
Citera
2023-01-25, 20:01
  #5
Medlem
Det här funkar, men jag har en Mac så du får ändra "export_path".
Kod:
import pandas as pd
import os
 
def save_to_excel(df, export_path, file_name):
        # skapa en mapp (för ditt Excel dokument) om den inte redan finns
        if not os.path.exists(export_path):
            os.makedirs(export_path)

        # skapa ett Excel dokument
        excel_writer = pd.ExcelWriter(
            export_path + file_name + '.xlsx')

        # lägg till ett Excel sheet
        df.to_excel(excel_writer, file_name)

        # spara dokumentet
        excel_writer.save()
        return

data = {'Name': ['Hasse', 'Jim', 'Erik'],
        'Age': [25, 30, 35],
        'City': ['Stockholm', 'Uppsala', 'Lund']}
df = pd.DataFrame(data)

save_to_excel(df, 'Min Excel mapp/', 'flashback')
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback