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

2024-04-28 02:35:22 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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


Tags: notextinfromimport信息dffor
1条回答
网友
1楼 · 发布于 2024-04-28 02:35:22

这应该做到:

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)

相关问题 更多 >