使用BeautifulSoup解析数据并使用pandas DataFrame to_csv对数据进行排序

问题描述 投票:1回答:1

我的目标是从网站解析数据并将这些数据存储在文本文件中,格式化为在Excel中打开。

这是代码:

from bs4 import BeautifulSoup
import requests
import pprint
import re
import pyperclip
import json
import pandas as pd
import csv

pag = range (2, 126)
out_file = open('bestumbrellasoffi.txt', 'w', encoding='utf-8')
with open('bestumbrellasoffi.txt', 'w', encoding='utf-8') as file:
    for x in pag:

    # Iterate pages
        url = 'https://www.paginegialle.it/ricerca/lidi%20balneari/italia/p-' + str(x) + '?mr=50'
        response = requests.get(url)
        soup = BeautifulSoup(response.content, "html.parser")

        # Parse data
        for i, j, k, p, z in zip(soup.find_all('span', attrs=
{'itemprop': 'name'}), soup.find_all('span', attrs=
{'itemprop': 'longitude'}), soup.find_all('span', attrs=
{'itemprop': 'latitude'}), soup.find_all('span', attrs = {'class': 'street-
address'}), soup.find_all('div', attrs = {'class': 'tel elementPhone'})):
            info = i.text, j.text, k.text, p.text, z.text

            # Check if data is good
            print(url)
            print (info)

            # Create dataframe
            raw_data = { 'nome': [i], 'longitudine': [j], 'latitudine':
            [k], 'indirizzo': [p], 'telefono': [z]}
            print(raw_data)
            df = pd.DataFrame(raw_data, columns =
               ['nome', 'longitudine', 'latitudine', 'indirizzo', 'telefono'])
            df.to_csv('bestumbrellasoffi.txt')

out_file.close()

有所有这些模块,因为我做了很多尝试。

所以输出

print(info)  [is][1]

的输出

打印(原始数据)qazxsw poi


这是经过审查的代码,功能完备。

is
python pandas dataframe beautifulsoup export-to-csv
1个回答
0
投票

您在for循环的每次迭代中初始化一个新的数据框。

您应该在循环外部初始化它,然后在循环中使用append()来添加每一行数据。

© www.soinside.com 2019 - 2024. All rights reserved.