在使用python編寫爬蟲爬取**頁面資料時,遇到編碼錯誤,具體問題如下。
爬蟲**:
……
request = urllib2.request(url,headers = headers)
response = urllib2.urlopen(request)
return response.read().decode('gbk')
……
執行**到return這一行的時候報錯:
unicodedecodeerror: 'gbk' codec can't decode bytes in position 1-2: illegal multibyte sequence
仔細檢查**沒有發現錯誤,**頁面的編碼也是gbk,後面才發現是由於**將網頁用gzip進行了壓縮。
在瀏覽器除錯視窗檢視network
>response headers
,可以發現以下內容:
content-encoding
:gzip
對爬取到的網頁內容進行gzip解壓後再進行解碼。
1.引入以下兩個包
from stringio import stringio
import gzip
2.修改headers,新增accept-encoding屬性……
request.add_header('accept-encoding', 'gzip')
……
3.進行解壓和解碼……
request = urllib2.request(url,headers = headers)
request.add_header('accept-encoding', 'gzip')
response = urllib2.urlopen(request)
strbuf = stringio(response.read())
gzf = gzip.gzipfile(fileobj=strbuf)
return gzf.read().decode('gbk')
……
Python 爬蟲爬取網頁
工具 python 2.7 import urllib import urllib2 defgetpage url 爬去網頁的方法 request urllib.request url 訪問網頁 reponse urllib2.urlopen request 返回網頁 return response...
python爬蟲 爬取靜態網頁
爬蟲新手剛入門,萌新練手交流作 import requests import bs4 from bs4 import beautifulsoup 偽裝瀏覽器,獲取源 def gethtml url headers 偽裝瀏覽器 response requests.get url,headers hea...
Python 爬取網頁
先謝郭嘉 以鏈家二手房為例 1.爬取網頁所必須的庫 import urllib.request import ssl 2.獲取預爬網頁資訊 1 網頁url 3.下面就可以爬取網頁了 以鏈家二手房為例 1.爬取網頁所必須的庫 import urllib.request import ssl 2.獲取預...