首页 > 解决方案 > 用美丽的汤努力获得干净的Excel

问题描述

我正在尝试从网站获取有关其营业时间的信息,但我的结果非常令人失望。

import requests
from bs4 import BeautifulSoup
import xlsxwriter

i = "90460"

URL = "https://www.tuodi.it/negozi-dettaglio.cfm?negozio=%s" % i
page = requests.get(URL)

soup = BeautifulSoup(page.content, "html.parser")

results = soup.find(id="orario" , style="width:50%;float:left")
orari = results.find_all("div", class_="tab", style="width:220px;line-height: 25px")

print(orari)

我的输出如下所示

[<div class="tab" style="width:220px;line-height: 25px">
                            8,30 
                            - 20,00 
                            <br/>
                            
                            
                            
                            8,30 
                            - 20,00 
                            <br/>...

但我宁愿有一个可以导出到 excel 形式的结果

Excel结果

提前致谢!

标签: excelweb-scrapingbeautifulsoup

解决方案


要获得结果,您可以使用.stripped_stringslist comprehension

[''.join(x.split()) for x in orari[0].stripped_strings]

这将为您提供一个列表,您可以将其写入文件:

['8,30-20,00', '8,30-20,00', '8,30-20,00', '8,30-20,00', '8,30-20,00', '8,30-20,00', '8,00-13,00']

例子

import requests
from bs4 import BeautifulSoup
import pandas as pd
i = "90460"

URL = "https://www.tuodi.it/negozi-dettaglio.cfm?negozio=%s" % i
page = requests.get(URL)

soup = BeautifulSoup(page.content, "html.parser")

results = soup.find(id="orario" , style="width:50%;float:left")
orari = results.find_all("div", class_="tab", style="width:220px;line-height: 25px")

data = [''.join(x.split()) for x in orari[0].stripped_strings]

pd.DataFrame([data]).to_excel('test.xslx', index=False)

推荐阅读