小编Rya*_*ers的帖子

使用Python Django BeautifulSoup和Curl正确地刮擦和显示日文字符

我正在尝试使用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()
Run Code Online (Sandbox Code Playgroud)

然后我把它传递给BeautifulSoup:

html = get_html(str(scheduled_import.url))
soup = BeautifulSoup(html)
Run Code Online (Sandbox Code Playgroud)

然后将其解析并将其保存到数据库中.然后我使用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')
Run Code Online (Sandbox Code Playgroud)

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

xe3\x82\xb7\xe3\x83\xa3\xe3\x83\xaa\xe3\x82\xb9\xe3\x83\x88

\ xe8\x81\xb7\xe5\x8b\x99\xe5\x86\x85\xe5\xae
\ xb9\xe3\x82\xb7\xe3\x82\xb9\xe3\x82\xb3\xe3\x82\xb7\xe3\x82\xb9\xe3\x83\x86\xe3\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\XAD\xe9\X83\xa8\XE3\X81\XA7\XE3\X81\XAF\XE3\X80\X81\XE4\XBA\XBA\XE3\X82\X92\XE4\XB8\XAD\xe5\XBF\X83\XE3\X81\xa8\XE3\X81\X97\XE3\X81\x9f\XE3\X82\XB3\XE3\X83\x9f\XE3\X83\xa5\XE3\X83\x8b\XE3\X82\XB1\XE3\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.

基本上我不知道我在做什么,并且会感谢我能得到的任何帮助或建议,所以我可以避免花一天时间试图解决这个问题.

python django beautifulsoup utf-8 iso-8859-1

7
推荐指数
1
解决办法
1452
查看次数

标签 统计

beautifulsoup ×1

django ×1

iso-8859-1 ×1

python ×1

utf-8 ×1