除了无法使用BeautifulSoup和Scrapy以外,还有其他方法无法删除这些网站吗?

时间:2019-04-30 18:21:11

标签: python web-scraping beautifulsoup scrapy

我正在尝试从Tangerine website刮除nbn个计划,以此作为一种刮除方法。我正在使用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 个答案:

答案 0 :(得分:1)

您的问题不是代码,而是您的libra文件的编码。

使用以下步骤将编码从UTF-16更改为UTF-8

File > New > Spreadsheet,然后是Insert > Sheet from file。选择您的文件和OK。您应该获得文本导入窗口。在顶部,检查“字符集”设置-我猜是它设置不正确。如果尚未将其更改为UTF-8