찾다

 >  Q&A  >  본문

python - BeautifulSoup使用find_all方法,如何转换编码?

用BeautifulSoup解析页面,调用find_all打印出来是乱码

代码如下:

    def find(self):
        HtmlData = self.Data()                         #urllib获取的结果(页面编码gb2312)
        HtmlSoup = BeautifulSoup(HtmlData,"lxml")
        FindALL = HtmlSoup.find_all('a')
    #    print HtmlSoup.encode("gb2312")               #能够正常打印
        print str(FindALL).encode("gb2312")            #出现乱码

抓取的页面编码是gb2312,打印的时候使用encode能够正常输出中文字符,但是使用find_all的时候打印出来是乱码
如下:

    et="_blank">\u4e2d\u534e\u6c11\u4fd7\u793c\u4eea</a>, <a href="Doc/1603/2520447.
    htm" target="_blank">\u6e05\u660e\u8282\u626b\u5893\uff0c\u90fd\u6709\u90a3\u4e9

查了发现bs默认编码是utf-8,所以会出现这样的问题,由于本人菜鸡一枚,查了好多都没弄懂。
网上大牛都说python2编码水很深,现在碰到这个问题真心头疼 。请教大牛有什么好的办法对编码进行转换?或者让它可以正常输出中文字符?

大家讲道理大家讲道理2809일 전1111

모든 응답(2)나는 대답할 것이다

  • PHPz

    PHPz2017-04-17 17:49:46

    여기에 있는 FindALL은 목록입니다. 잃고 싶다면 루프로 출력해야 합니다.

    으아아아

    또는
    json.dumps 인쇄(FindALL, verify_ascii=False)

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-17 17:49:46

    위의 답변에 따라 한자를 성공적으로 인쇄하세요.

    으아아아

    정말 감사합니다!

    회신하다
    0
  • 취소회신하다