Есть ли способ очистить не подлежащий утилизации веб-сайт, кроме использования BeautifulSoup и Scrapy, поскольку они не работают? - PullRequest
2 голосов
/ 30 апреля 2019

Я пытаюсь вычистить планы nbn с сайта Tangerine как чистку. Я использую BeautifulSoup, и я могу почистить данные и увидеть очищенные данные в терминале, но как только я сохраняю данные в CSV-файл, он не работает, и я получаю некоторую странную типизацию.

Я использовал BeautifulSoup, но я также знаю, как использовать scrapy и использовал его раньше. Я просто хочу узнать, можно ли перед попыткой очистить данные и сохранить их в файл csv с помощью scrapy, а если нет, то что еще я могу использовать?
Есть также несколько сайтов, которые я пытался очистить с помощью скрапа, но он не работал. Я знаю, что в моем коде нет ничего плохого, потому что я попытался очистить другие сайты, и это сработало.

import requests
from bs4 import BeautifulSoup
import pandas


url = requests.get('https://www.tangerinetelecom.com.au/nbn/nbn-broadband')
soup = BeautifulSoup(url.content, 'html.parser')

plans = soup.find_all('div', class_="large-3 columns text-center")

data = []

for plan in plans:
    d = {}
    info = plan.find_all('p')
    title = info[0].text
    speed = info[1].text[0:-2]
    d['Speed'] = title + '\n' + speed
    d['Data'] = info[2].text
    d['Trial'] = info[3].text
    d['Contract'] = info[4].text
    d['Setup Fee'] = info[5].text
    d['Promo Price'] = info[6].text
    d['Price'] = info[7].text[0:-1]
    d['Price Details'] = info[8].text.replace('(', '').replace(')', '')

    data.append(d)

print(data)
df = pandas.DataFrame(data)
df.to_csv("tangerine.csv")

Ожидаемым результатом будут следующие данные в CSV-файле:

[ {'Speed': 'Basic Speed \n10Mbps Typical Evening Speed ', 'Data': 'UNLIMITED DATA', 'Trial': 'RISK FREE TRIAL', 'Contract': 'NO CONTRACT', 'Setup Fee': '$0 SETUP FEE', 'Promo Price': 'SPECIAL PROMO PRICE', 'Price': '$49.90/mth', 'Price Details': '$49.90 for 6 months, then $59.90 ongoing'}, 
{'Speed': 'Speed Boost \n21Mbps Typical Evening Speed ', 'Data': 'UNLIMITED DATA', 'Trial': 'RISK FREE TRIAL', 'Contract': 'NO CONTRACT', 'Setup Fee': '$0 SETUP FEE', 'Promo Price': 'SPECIAL PROMO PRICE', 'Price': '$58.90/mth', 'Price Details': '$58.90 for 6 months, then $68.90 ongoing'}, 
{'Speed': 'XL Speed Boost \n42Mbps Typical Evening Speed ', 'Data': 'UNLIMITED DATA', 'Trial': 'RISK FREE TRIAL', 'Contract': 'NO CONTRACT', 'Setup Fee': '$0 SETUP FEE', 'Promo Price': 'SPECIAL PROMO PRICE', 'Price': '$64.90/mth', 'Price Details': '64.90 for 6 months, then $74.90 ongoing'}, 
{'Speed': "XXL Speed B'st \n83Mbps Typical Evening Speed ", 'Data': 'UNLIMITED DATA', 'Trial': 'RISK FREE TRIAL', 'Contract': 'NO CONTRACT', 'Setup Fee': '$0 SETUP FEE', 'Promo Price': 'SPECIAL PROMO PRICE', 'Price': '$69.90/mth', 'Price Details': '$69.90 for 6 months, then $79.90 ongoing'} ]

Но вместо этого я получаю странную печать в файле csv: Image of the weird typing, I've been getting

1 Ответ

1 голос
/ 30 апреля 2019

Ваша проблема не в коде, а в кодировке вашего файла libra.

Используйте эти шаги, чтобы изменить кодировку с UTF-16 на UTF-8:

File > New > Spreadsheet, затем Insert > Sheet from file. Выберите свой файл и OK. Вы должны получить окно импорта текста. Вверху проверьте настройку «Набор символов» - я думаю, что она установлена ​​неправильно. Если это еще не так, измените его на UTF-8.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...