【问题标题】:Why Beautifulsoup is getting weird source code characters while downloading a web-page?为什么 Beautifulsoup 在下载网页时会出现奇怪的源代码字符?
【发布时间】:2019-10-22 08:48:06
【问题描述】:

我是 python 和网络爬虫的新手。我正在做一些爬取一些网站的练习,并且用beautifulsoup 看起来很棒。但最近,当我使用下面的代码抓取一个波斯网站 (https://video.varzesh3.com) 时,我收到了奇怪的字符。我在其他波斯网站上做过同样的程序,我相信问题不在于编码。这是我的代码:

url = 'https://video.varzesh3.com'
source_code = requests.get(url)
plain_text = source_code.text
soup = BeautifulSoup(plain_text, "html.parser")
print(soup)

这是结果的一部分:

<!DOCTYPE html>

<html lang="en">
<head>
<meta charset="utf-8"/>
<meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta content="width=device-width, initial-scale=1" name="viewport"/>
<link href="/favicon.ico" rel="shortcut icon" type="image/x-icon"/>
<title>ÙÛØ¯ÛÙ ÙØ±Ø²Ø´ س٠| خاÙÙ</title>
<meta content="sport ,varzesh ,football, soccer,livescores, live score, livescore, iran,football3,Daily soccer news , broadcast ,ÙÙØªØ¨Ø§Ù س٠, ÙØªØ§Ûج Ø²ÙØ¯Ù , Ø®ÙÛØ¬ ÙØ§Ø±Ø³ , perian gulf , ÙÛÚ¯ آزادگا٠,  ÙÙØ±ÙØ§ÙØ§Ù Ø¢Ø³ÛØ§ ,  ÙÙØ±ÙØ§ÙØ§Ù ارÙپا ,  ÙÛÚ¯ برتر , جا٠حذÙÛ , شبک٠س٠, ÙØ±Ø²Ø´ , ÙÙØªØ¨Ø§Ù برتر , Ø§ÛØ±Ø§Ù , Ø¬Ø§Ù Ø¬ÙØ§ÙÛ , Ø¬Ø§Ù Ø¬ÙØ§ÙÛ 2010,ÙÙØªØ¨Ø§Ù 3 ," name="keywords">
<meta content="پاÙگا٠ÙÛØ¯ÛÙ ÙØ±Ø²Ø´Û Ø¨Ø±Ø§Ù ÙØ§Ø±Ø³Ù Ø²Ø¨Ø§ÙØ§Ù ÙÙ ÙÛØ¯ÛÙ Ø­ÙØ²Ù ÙØ±Ø²Ø´ (ÙÙØªØ¨Ø§ÙØÙاÙÙØ¨Ø§Ù ØØ¨Ø³Ùتبا٠Ù...) را ارائ٠ÙÛ Ú©ÙØ¯" name="description">
<link href="/Static/css/frontend.min.css?v=9" rel="stylesheet" type="text/css"/>
<link href="https://static2.farakav.com/v3/static/css/fonts.css?version=6" rel="stylesheet" type="text/css"/>
<link href="https://static2.farakav.com/varzesh3/assets/font/varzesh3-icon/varzesh3.min.css" rel="stylesheet" type="text/css"/>
<script src="https://static2.farakav.com/football3_jscripts/jquery-1.8.0.min.js" type="text/javascript"></script>
<script src="/Static/js/jquery.cookie.js" type="text/javascript"></script>
<script src="/Static/js/mustache.js" type="text/javascript"></script>
<script type="text/javascript">
        now = new Date();
        var head = document.getElementsByTagName('head')[0];
        var script = document.createElement('script');
        script.type = 'text/javascript';
        var script_address = 'https://cdn.yektanet.com/js/varzesh3.com/article.v1.min.js';
        script.src = script_address + '?v=' + now.getFullYear().toString() + '0' + now.getMonth() + '0' + now.getDate() + '0' + now.getHours();
        head.appendChild(script);
    </script>

为什么我会得到像“پاÙگا٠ÙÛØ¯ÛÙ ÙØ±Ø²Ø´Û Ø¨Ø±Ø§Ù ÙØ§Ø±Ø³”这样的奇怪字符?

【问题讨论】:

    标签: python html unicode beautifulsoup web-crawler


    【解决方案1】:

    你得到那些有线字符是因为它是编码的。

    >>> source_code.encoding
    'ISO-8859-1'
    

    试试这个,设置编码为UTF-8

    >>> source_code.encoding = 'UTF-8'          
    >>> plain_text = source_code.text
    >>> BeautifulSoup(plain_text, "html.parser")
    

    输出:

    <!DOCTYPE html>
    
    <html lang="en">
    <head>
    <meta charset="utf-8"/>
    <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
    <meta content="width=device-width, initial-scale=1" name="viewport"/>
    <link href="/favicon.ico" rel="shortcut icon" type="image/x-icon"/>
    <title>ویدیو ورزش سه | خانه</title>
    <meta content="sport ,varzesh ,football, soccer,livescores, live score, livescore, iran,football3,Daily soccer news , broadcast ,فوتبال سه , نتایج زنده , خلیج فارس , perian gulf , لیگ آزادگان ,  قهرمانان آسیا ,  قهرمانان اروپا ,  لیگ برتر , جام حذفی , شبکه سه , ورزش , فوتبال برتر , ایران , جام جهانی , جام جهانی 2010,فوتبال 3 ," name="keywords">
    <meta content="پايگاه ویدیو ورزشی براي فارسي زبانان كه ویدیو حوزه ورزش (فوتبال،واليبال ،بسكتبال و...) را ارائه می کند" name="description">
    <link href="/Static/css/frontend.min.css?v=9" rel="stylesheet" type="text/css"/>
    ....
    ...
    ..
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-12
      • 1970-01-01
      • 1970-01-01
      • 2015-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多