将没有表格的抓取数据保存到 pandas
Saving scraped data with no tables into pandas
大家好我有一个网站,我需要将数据保存到 excel 页面中。但是数据不是我通常使用 pandas 处理的 table 格式。下面是我举的网站的一部分。连同我用来提取准确信息的代码 need/want.
from bs4 import BeautifulSoup
html_doc = """
<div class="col-md-4">
<p>
<span class="text-muted">Order Number</span><br>
A-21-897274
</p>
</div>
<div class="col-md-4">
<p>
<span class="text-muted">Location</span><br>
Ohio
</p>
</div>
<div class="col-md-4">
<p>
<span class="text-muted">Date</span><br>
07/01/2022
</p>
</div>
</div>
"""
soup = BeautifulSoup(html_doc, "html.parser")
def correct_tag(tag):
return tag.name == "span" and tag.get_text(strip=True) in {
"Order Number",
"Location",
"Date",
}
for t in soup.find_all(correct_tag):
print(f"{t.text}: {t.find_next_sibling(text=True).strip()}")
这非常有效,可以提取我想要的数据,如下所示:
Order Number: A-21-897274
Location: Ohio
Date: 07/01/2022
我只需要帮助将这些数据放入数据框中以保存 excel。如有任何帮助,我们将不胜感激!
将数据存储为 dict
。如果您有很多订单,请将它们附加到 list
。最后,将列表转换为 dataframe
.
import pandas as pd
order_list = []
order_info = {}
for t in soup.find_all(correct_tag):
order_info[t.text] = t.find_next_sibling(text=True).strip()
# assume you have many orders (append to list first)
order_list.append(order_info)
order_df = pd.DataFrame(order_list)
order_df.head()
输出:
Order Number Location Date
0 A-21-897274 Ohio 07/01/2022
大家好我有一个网站,我需要将数据保存到 excel 页面中。但是数据不是我通常使用 pandas 处理的 table 格式。下面是我举的网站的一部分。连同我用来提取准确信息的代码 need/want.
from bs4 import BeautifulSoup
html_doc = """
<div class="col-md-4">
<p>
<span class="text-muted">Order Number</span><br>
A-21-897274
</p>
</div>
<div class="col-md-4">
<p>
<span class="text-muted">Location</span><br>
Ohio
</p>
</div>
<div class="col-md-4">
<p>
<span class="text-muted">Date</span><br>
07/01/2022
</p>
</div>
</div>
"""
soup = BeautifulSoup(html_doc, "html.parser")
def correct_tag(tag):
return tag.name == "span" and tag.get_text(strip=True) in {
"Order Number",
"Location",
"Date",
}
for t in soup.find_all(correct_tag):
print(f"{t.text}: {t.find_next_sibling(text=True).strip()}")
这非常有效,可以提取我想要的数据,如下所示:
Order Number: A-21-897274
Location: Ohio
Date: 07/01/2022
我只需要帮助将这些数据放入数据框中以保存 excel。如有任何帮助,我们将不胜感激!
将数据存储为 dict
。如果您有很多订单,请将它们附加到 list
。最后,将列表转换为 dataframe
.
import pandas as pd
order_list = []
order_info = {}
for t in soup.find_all(correct_tag):
order_info[t.text] = t.find_next_sibling(text=True).strip()
# assume you have many orders (append to list first)
order_list.append(order_info)
order_df = pd.DataFrame(order_list)
order_df.head()
输出:
Order Number Location Date 0 A-21-897274 Ohio 07/01/2022