добавить извлеченные данные как новый столбец в существующем csv-python - PullRequest
0 голосов
/ 06 июля 2018

Любой, пожалуйста, поможет. Пожалуйста, укажите, где я неправ, когда извлеченные отзывы записаны в 3 отдельных столбца в hotelreview.csv, как я могу это исправить, чтобы записать их в 1 столбец? и как добавить для него заголовок «обзор» на основе приведенных ниже кодов. И я также хочу добавить новые извлеченные данные (столбец «обзор») в существующий csv 'hotel_FortWorth.csv'. Я просто добавил извлеченную информацию в новый CSV, я не знаю, как объединить 2 файла вместе или какими-либо другими способами? URL может быть повторен, чтобы соответствовать отзывам. Пожалуйста! Спасибо!

Файл 'hotel_FortWorth.csv' имеет 3 столбца, например:

           Name                         link
1    Omni Fort Worth Hotel     https://www.tripadvisor.com.au/Hotel_Review-g55857-d777199-Reviews-Omni_Fort_Worth_Hotel-Fort_Worth_Texas.html
2    Hilton Garden Hotel       https://www.tripadvisor.com.au/Hotel_Review-g55857-d2533205-Reviews-Hilton_Garden_Inn_Fort_Worth_Medical_Center-Fort_Worth_Texas.html
3......
...

Я использовал URL-адреса из существующих CSV для извлечения обзоров, коды, как показано:

import requests
from unidecode import unidecode
from bs4 import BeautifulSoup
import pandas as pd    

file = []
data = pd.read_csv('hotel_FortWorth.csv', header = None)
df = data[2]

for url in df[1:]:
    print(url)
    thepage = requests.get(url).text
    soup = BeautifulSoup(thepage, "html.parser")
    resultsoup = soup.find_all("p", {"class": "partial_entry"})
    file.extend(resultsoup)

    with open('hotelreview.csv', 'w', newline='') as fid:
    for review in file:
        review_list = review.get_text()
        fid.write(unidecode(review_list+'\n'))

Ожидаемый результат:

    name          link         review
1   ...           ...         ...
2
....

1 Ответ

0 голосов
/ 06 июля 2018

Вы можете pandas для создания нового CSV.

Ex:

import requests
from unidecode import unidecode
from bs4 import BeautifulSoup
import pandas as pd

data = pd.read_csv('hotel_FortWorth.csv')
review = []
for url in data["link"]:
    print(url)
    thepage = requests.get(url).text
    soup = BeautifulSoup(thepage, "html.parser")
    resultsoup = soup.find_all("p", {"class": "partial_entry"})
    review.append(unidecode(resultsoup))
data["review"] = review
data.to_csv('hotelreview.csv')
...