BeautifulSoup:使用findAll打印到终端时,印度语会改为unicode。功能

时间:2017-07-11 06:56:42

标签: python unicode terminal beautifulsoup

我想用本地语言废弃流行的印度语(使用Scrapy)网站,在使用BeautifulSoup从网站解析响应并打印到终端后,创建印度语(马拉雅拉姆语)中最常用单词的字典使用,

soup = BeautifulSoup(response.body, "lxml")
print(soup)

我在终端上输出了这个输出,

...

<div class="articleBody common_text" id="content2044131">
<div class="col-md-12 col-sm-12 col-xs-12">
<p>വൈറസുകള്‍ എന്നൊരു സാധനമേ ഇല്ല, അത് ഭൂലോക തട്ടിപ്പാണ്. കേരളത്തിലെ പ്രശസ്തനെന്ന് അറിയപ്പെടുന്ന വൈദ്യരുടെ പ്രസ്താവന ആണിത്. മാത്രമല്ല വൈദ്യര്‍ കേരളത്തിലെ ഏറ്റവും വലിയ പീഡിയാട്രീഷനായ ഏതോ ഡോ. പിഷാരടിയോടു ചോദിച്ച് <a href="https://www.facebook.com/181790438911986/videos/313673832390312/"><strong>ഇക്കാര്യം ഉറപ്പുവരുത്തുക കൂടി ചെയ്തു</strong></a>. വൈദ്യരെയും പിഷാരടിയെയും പറഞ്ഞിട്ട് കാര്യമില്ല, കാരണം വൈറസുകളെ കാണാന്‍ സാധിക്കില്ലല്ലോ. പിന്നെ അവ ഉണ്ടെന്ന് എങ്ങനെ  വിശ്വസിക്കും?  </p>
<p>ഈ ലേഖനം എഴുതാന്‍ കാരണം വൈദ്യരും പിഷാരടിയും മാത്രമല്ല, ഈ അടുത്ത് ഒരാള്‍ ഇതിലും ഞെട്ടിക്കുന്ന ഒരു വാദം പറഞ്ഞു. ഇലക്ട്രോണ്‍, പ്രോട്ടോണ്‍ തുടങ്ങിയ സംഗതികളെല്ലാം ശാസ്ത്രത്തിന്റെ ഭാവന ആണത്രെ. ഇലക്ട്രോണ്‍ വിരുദ്ധരും വൈറസ് വിരുദ്ധരും ചോദിക്കുന്നത് 'കണ്ടിട്ടുണ്ടോ' എന്നാണ്. ഉത്തരം ഇല്ല എന്നുതന്നെ. പക്ഷെ കണ്ടാല്‍ മാത്രമേ വിശ്വസിക്കാന്‍ കഴിയുകയുള്ളോ? കാണാതെ എങ്ങനെ വിശ്വസിക്കും? ഇതാണ് ഈ ലേഖനത്തില്‍ പറയാന്‍ ഉദ്ദേശിക്കുന്നത്. </p>

...

足够公平,但在解析了我想要使用的部分

之后
    div = soup.findAll("div", {"class": "articleBody common_text"})
    print(div)

我在终端上得到了这个,

<div class="articleBody common_text" id="content2044131">\n<div class="col-md-12 col-sm-12 col-xs-12">\n<p>\u0d35\u0d48\u0d31\u0d38\u0d41\u0d15\u0d33\u0d4d\u200d \u0d0e\u0d28\u0d4d\u0d28\u0d4a\u0d30\u0d41 \u0d38\u0d3e\u0d27\u0d28\u0d2e\u0d47 \u0d07\u0d32\u0d4d\u0d32, \u0d05\u0d24\u0d4d \u0d2d\u0d42\u0d32\u0d4b\u0d15 \u0d24\u0d1f\u0d4d\u0d1f\u0d3f\u0d2a\u0d4d\u0d2a\u0d3e\u0d23\u0d4d. \u0d15\u0d47\u0d30\u0d33\u0d24\u0d4d\u0d24\u0d3f\u0d32\u0d46 \u0d2a\u0d4d\u0d30\u0d36\u0d38\u0d4d\u0d24\u0d28\u0d46\u0d28\u0d4d\u0d28\u0d4d 
\u0d05\u0d31\u0d3f\u0d2f\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d41\u0d28\u0d4d\u0d28 \u0d35\u0d48\u0d26\u0d4d\u0d2f\u0d30\u0d41\u0d1f\u0d46 \u0d2a\u0d4d\u0d30\u0d38\u0d4d\u0d24\u0d3e\u0d35\u0d28 \u0d06\u0d23\u0d3f\u0d24\u0d4d. \u0d2e\u0d3e\u0d24\u0d4d\u0d30\u0d2e\u0d32\u0d4d\u0d32 \u0d35\u0d48\u0d26\u0d4d\u0d2f\u0d30\u0d4d\u200d \u0d15\u0d47\u0d30\u0d33\u0d24\u0d4d\u0d24

为什么突然变成原始unicode?有没有一种正确的方法来解析它。并且只是为了我打算做的信息是从文章中删除单个单词并将其存储到json文件中,其中包含相应的单词及其出现的次数,有点像这样

{
  "സാധനമേ": 67,
  "കേരളത്തിലെ": 69,
  "ഒരാള്‍": 50,
  .
  .
  .
}

1 个答案:

答案 0 :(得分:1)

它与编码有关。通过在bs4对象上使用 public class MainActivity extends AppCompatActivity implements Main2Activity.OnDataPass{ ......... private Main2Activity fragment2; private Main3Activity fragment3; private Main4Activity fragment4; public void onClickBtn1(View v){ fragment2.changeButtonColor(v); } public void onClickBtn2(View v){ fragment3.changeButtonColor(v); } public void onClickBtn3(View v){ fragment4.changeButtonColor(v); } public void onClickBtn4(View v){ //fragment transaction code here } private void setupViewPager(ViewPager viewPager) { ....... fragment2 = new Main2Activity(); fragment3 = new Main3Activity(); fragment4 = new Main4Activity(); adapter.addFragment(fragment2, "TAB1"); adapter.addFragment(fragment3, "TAB2"); adapter.addFragment(fragment4, "TAB3"); ....... } ....... } 编码,我能够获得所需的输出。

改变,

utf-8

要,

div = soup.findAll("div", {"class": "articleBody common_text"})
print(div)

解决了这个问题。