写入特殊字符到csv文件时发生的问题

2024-10-02 00:41:27 发布

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

我正在将网页的爬网输出写入CSV文件。但是,很少有特殊字符(如“hyphen”)无法正确解析

原文:亚马逊预测-现已正式上市

csv结果:亚马逊预测– 现已普遍提供

我试过下面的代码

from bs4 import BeautifulSoup
from datetime import date
import requests
import csv
source = requests.get('https://aws.amazon.com/blogs/aws/').text
soup = BeautifulSoup(source, 'lxml')
# csv_file = open('aitrendsresults.csv', 'w')
csv_file = open('aws_cloud_results.csv', 'w' , encoding = 'utf8' )
csv_writer = csv.writer(csv_file)
csv_writer.writerow(['title','img','src','summary'])
match = soup.find_all('div',class_='lb-row lb-snap')
for n in match:
 imgsrc= n.div.img.get('src')
 titlesrc= n.find('div',{'class':'lb-col lb-mid-18 lb-tiny-24'})
 titletxt= titlesrc.h2.text
 anchortxt= titlesrc.a.get('href')
 sumtxt= titlesrc.section.p.text
 print(sumtxt)
 csv_writer.writerow([titletxt,imgsrc,anchortxt,sumtxt])
csv_file.close()

你能帮我得到像上面提供的原文一样的文本吗


Tags: csvtextfromimportdivawsgetrequests
3条回答

创建一个函数来处理ASCII字符(即连字符、分号),并将字符串作为参数传递到下面的函数中:

def decode_ascii(string):
    return string.encode('ascii', 'ignore').decode('ascii')

input_text = 'Amazon Forecast - Now Generally Available'
output_text = decode_ascii(input_text)
print(output_text)

输出应该是CSV中的Amazon Forecast - Now Generally Available

我也和BS合作过,我想你只是犯了个小错误。在第8行打开csv文件的地方,编码应该是“UTF-8”而不是“utf8”。 看看能不能帮上忙

使用标题作为测试以下作品为我

from bs4 import BeautifulSoup
import requests, csv

source = requests.get('https://aws.amazon.com/blogs/aws/').text
soup = BeautifulSoup(source, 'lxml')

with open("aws_cloud_results.csv", "w", encoding="utf-8-sig", newline='') as csv_file:
    w = csv.writer(csv_file, delimiter = ";", quoting=csv.QUOTE_MINIMAL)
    w.writerow(['title'])
    match = soup.find_all('div',class_='lb-row lb-snap')
    for n in match:
        titlesrc= n.find('div',{'class':'lb-col lb-mid-18 lb-tiny-24'})
        titletxt= titlesrc.h2.text
        w.writerow([titletxt])

相关问题 更多 >

    热门问题