正确使用Python Django BeautifulSoup和Cu抓取和显示日文字符

2024-09-25 12:28:24 发布

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

我正在尝试使用python、curl和BeautifulSoup来获取日语页面。然后,我将文本保存到使用utf-8编码的MySQL数据库中,并使用Django显示结果数据。在

下面是一个URL示例:

https://www.cisco.apply2jobs.com/ProfExt/index.cfm?fuseaction=mExternal.showJob&RID=930026&CurrentPage=180

我有一个函数用于将HTML提取为字符串:

def get_html(url):
    c = Curl()
    storage = StringIO()
    c.setopt(c.URL, str(url))
    cookie_file = 'cookie.txt'
    c.setopt(c.COOKIEFILE, cookie_file)
    c.setopt(c.COOKIEJAR, cookie_file)
    c.setopt(c.WRITEFUNCTION, storage.write)
    c.perform()
    c.close()
    return storage.getvalue()

然后我把它传给beauthulsoup:

^{pr2}$

然后将其解析并保存到数据库中。然后使用Django将数据输出到json。以下是我使用的视图:

def get_jobs(request):
    jobs = Job.objects.all().only(*fields)
    joblist = []
    for job in jobs:
        job_dict = {}
        for field in fields:
            job_dict[field] = getattr(job, field)
        joblist.append(job_dict)
    return HttpResponse(dumps(joblist), mimetype='application/javascript')

结果页面显示字节码,例如:

在xe3\x83\x83\x88\xaa\xe3\x83\xa3\xe3\x83\x83\xaa\xe3\xe3\x83\xaa\xe3\xe3\x83\x88


\xe8\xe8\x81\x81\xb7\x7\xe5\x83\x86\x85\xe5\xe5\xex5\xae\xae\xb9
\xe3\x82\xb7\xe3\x82\x82\xb9\xe3\xe3\xe3\x82\xb3\xe3\x82\x3\x3\x3\x3\x3\x86\x3\x3\x86\x3\x83\xa0\xe3\x82\xba\xe3\x81\xae\xe3\x82\xb3\xe3\x83\xa9\xe3\x83\x9c\xe3\x83\xac\xe3\x83\xbc\xe3\x82\xb7\xe3\x83\xa7\xe3\x83\xb3\xe4\xba\x8b\xe6\xa5\xa5\xaxe9\xe9\X8\X8\xe3\xe3\X8\xe3\X7\xe3\X3\X1\xaf\xe3\xe3\X3\X20\X8\X1\xe4\xe4\xe4\xe4\xe4\X8\xe5\xe5\X二三\X3\X3\X1\X8\X8\X3\X1\x97\X3\X3\X1\x9f\X3\X3\X3\X3\X3\X3\X3\X3\X3\X3\X9\X3\X3\X3\X3\X3\X3\X3\X3\X3\X3\X\ x83\xbc\xe3\x82\xb7\xe3\x83\xa7\xe3\x83\xb3\xe3\x81\xab\xe3\x82\x88\xe3\x82\x8a\xe3\

而不是日语。在

我研究了一整天,把我的数据库转换成了utf-8,试着把iso-8859-1中的文本解码并编码成utf-8。在

基本上,我不知道我在做什么,如果能得到任何帮助或建议,我将不胜感激,这样我就可以避免再花一天时间来解决这个问题。在


Tags: cookiejobx1x82x3x81xe3xe5
1条回答
网友
1楼 · 发布于 2024-09-25 12:28:24

您发布的示例以某种方式是字符串的ascii表示。您需要将其转换为pythonunicode字符串。通常您可以使用string encoding and decoding来完成这项工作。如果您不确定哪一种方法是正确的,只需在python控制台中进行试验。在

尝试my_new_string = my_string.decode('utf-8')获取python unicode字符串。这应该在Django模板中正确显示,可以保存到DB等。。作为一个例子,您也可以尝试print my_new_string,然后看到它正在输出日语字符。在

相关问题 更多 >