gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 21:59:56 26 4
gpt4 key购买 nike

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

这是一个示例网址:

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()

然后我将它传递给 BeautifulSoup:

html = get_html(str(scheduled_import.url))
soup = BeautifulSoup(html)

然后对其进行解析并将其保存到数据库中。然后我使用 Django 将数据输出到 json。这是我正在使用的 View :

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\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。

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

最佳答案

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

尝试 my_new_string = my_string.decode('utf-8') 获取 python unicode 字符串。这应该在 Django 模板中正确显示,可以保存到数据库等。例如,您也可以尝试 print my_new_string 并会看到它正在输出日文字符。

关于python - 使用 Python Django BeautifulSoup 和 Curl 正确抓取和显示日文字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12397918/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com