gpt4 book ai didi

python - 如何将网站上所有抓取的数据保存在 Pandas 数据框中?

转载 作者:行者123 更新时间:2023-12-04 10:09:49 25 4
gpt4 key购买 nike

我写了一个代码,它使用 BeautifulSoup 从网页中抓取联系信息。和预先设计的图书馆 CommonRegex这基本上是用于抓取美国地址信息的正则表达式。虽然我能够提取列表形式的信息并将其转换为 Pandas 数据帧,但我无法保存列表中存在的所有值。这是我写的代码:

import pandas as pd
from commonregex import CommonRegex
from urllib.request import urlopen
from bs4 import BeautifulSoup

url = 'https://www.thetaxshopinc.com/pages/contact-tax-accountant-brampton'
html = urlopen(url)
soup = BeautifulSoup(html, 'lxml')

for link in soup.find_all('p'):
df = CommonRegex()
df1 = df.street_addresses(link.get_text())
df2 = df.phones(link.get_text())
df3 = df.emails(link.get_text())
for i in df1:
dfr = pd.DataFrame([i], columns = ['Address'])
for j in df2:
dfr1 = pd.DataFrame([j], columns = ['Phone_no'])
dfr1['Phone_no'] = dfr1['Phone_no'].str.cat(sep=', ')
dfr1.drop_duplicate(inplace = True)
for k in df3:
dfr2 = pd.DataFrame([k], columns = ['Email'])

dfc = pd.concat([dfr, dfr1, dfr2], axis = 1)

这是我得到的结果:-

enter image description here

但是,由于正则表达式为 Phone no 提取了 3 个值。 ,即

enter image description here

结果应该是这样的:-
enter image description here

我不知道如何解决这个问题,如果你们能帮助我就太好了。

最佳答案

这应该做:

import pandas as pd
from commonregex import CommonRegex
from urllib.request import urlopen
from bs4 import BeautifulSoup

url = 'https://www.thetaxshopinc.com/pages/contact-tax-accountant-brampton'
html = urlopen(url)
soup = BeautifulSoup(html, 'lxml')

dict_data = {'address':[], 'phone_no': [], 'email': []
}

crex = CommonRegex()

for link in soup.find_all('p'):

str_add = crex.street_addresses(link.get_text())
phone = crex.phones(link.get_text())
email = crex.emails(link.get_text())

if str_add:
dict_data['address'].append(str_add[0])
if phone:
dict_data['phone_no'].append(', '.join(phone))
if email:
dict_data['email'].append(email[0])

df = pd.DataFrame(dict_data)

关于python - 如何将网站上所有抓取的数据保存在 Pandas 数据框中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61386636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com