python-23:最初のページのソースコードを取得

3103 ワード

このプロジェクトで私たちが使っているサイトは
http://product.yesky.com/more/506001_31372_photograph_1.shtml
まず最初のページのソースコードの登り取りです.全体のコードは同じですが、コードの作成をもっと熟知させるために、最初からもう一度自分で叩くことをお勧めします.
#!/uer/bin/env python
# -*- coding: UTF-8 -*-
__author__ = '217    '
'''
      
'''

import urllib2

url = 'http://product.yesky.com/more/506001_31372_photograph_1.shtml'
user_agent = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:40.0) Gecko/20100101 Firefox/40.0'
headers = {'User-Agent':user_agent}
try:
    request = urllib2.Request(url,headers=headers)
    response = urllib2.urlopen(request)
    print response.read()
except urllib2.URLError,e:
    if hasattr(e,"code"):
        print e.code
    if hasattr(e,"reason"):
        print e.reason

では、最初のステップはウェブページのソースコードを登るのが簡単です.出力結果を見てみましょう.
python-23:爬取第一个网页的源码_第1张图片
待って、どうしたんですか.出力結果になぜ文字化けしたのですか.
インターネットで資料を調べるしかない
「ソースページの符号化とスキップ後の符号化変換が一致しない.ソースページがgbk符号化されたバイトストリームである場合、私たちがキャプチャした後のプログラムがutf-8を直接使用して符号化され、記憶ファイルに出力されると、必然的に文字化が乱れる」
だから解決する方法は復号することしかできなくて、先にホームページの符号化の方式を探し出して、更に登って取ったホームページのソースコードをホームページの符号化の方式によって復号して、この機能を実現するにはpythonの中でdecode()の方法を使います
Python decode()  
  
Python decode()     encoding             。          。
  
decode()    :
str.decode(encoding='UTF-8',errors='strict')
  
encoding --       , "UTF-8"。
errors --            。    'strict',          UnicodeError。         'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace'      codecs.register_error()       。
   
            。
   ,        ,python    encode()      ,   decode()  

python爬虫類コードでは、復号するのは簡単ですurllib 2.urlopen()で返されるコンテンツはdecode関数で直接復号すればよい
たとえば前に書いたソースコードでは、
contents = response.read()

に改心
contents = response.read().decode("gbk")

それでいい
ここでgbk
gbkは極視野ページで使用される符号化方式ですが、どのようにして1つのページで使用される符号化方式が何であるかを知っていますか?
1.F 12を押してインタフェースをデバッグし、Content-Typeという項目を見つけて、後はウェブソースの符号化フォーマットである.
python-23:爬取第一个网页的源码_第2张图片
2.ウェブソースには一般的にと書かれています.
では、修正した出力はどのようなものなのでしょうか.

OK、文字化けしの問題は解決しました