python-23:最初のページのソースコードを取得
このプロジェクトで私たちが使っているサイトは
http://product.yesky.com/more/506001_31372_photograph_1.shtml
まず最初のページのソースコードの登り取りです.全体のコードは同じですが、コードの作成をもっと熟知させるために、最初からもう一度自分で叩くことをお勧めします.
では、最初のステップはウェブページのソースコードを登るのが簡単です.出力結果を見てみましょう.
待って、どうしたんですか.出力結果になぜ文字化けしたのですか.
インターネットで資料を調べるしかない
「ソースページの符号化とスキップ後の符号化変換が一致しない.ソースページがgbk符号化されたバイトストリームである場合、私たちがキャプチャした後のプログラムがutf-8を直接使用して符号化され、記憶ファイルに出力されると、必然的に文字化が乱れる」
だから解決する方法は復号することしかできなくて、先にホームページの符号化の方式を探し出して、更に登って取ったホームページのソースコードをホームページの符号化の方式によって復号して、この機能を実現するにはpythonの中でdecode()の方法を使います
python爬虫類コードでは、復号するのは簡単ですurllib 2.urlopen()で返されるコンテンツはdecode関数で直接復号すればよい
たとえば前に書いたソースコードでは、
に改心
それでいい
ここでgbk
gbkは極視野ページで使用される符号化方式ですが、どのようにして1つのページで使用される符号化方式が何であるかを知っていますか?
1.F 12を押してインタフェースをデバッグし、Content-Typeという項目を見つけて、後はウェブソースの符号化フォーマットである.
2.ウェブソースには一般的にと書かれています.
では、修正した出力はどのようなものなのでしょうか.
OK、文字化けしの問題は解決しました
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
では、最初のステップはウェブページのソースコードを登るのが簡単です.出力結果を見てみましょう.
待って、どうしたんですか.出力結果になぜ文字化けしたのですか.
インターネットで資料を調べるしかない
「ソースページの符号化とスキップ後の符号化変換が一致しない.ソースページが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という項目を見つけて、後はウェブソースの符号化フォーマットである.
2.ウェブソースには一般的にと書かれています.
では、修正した出力はどのようなものなのでしょうか.
OK、文字化けしの問題は解決しました