在使用python編寫爬蟲爬取**頁面資料時,遇到編碼錯誤,具體問題如下。
爬蟲**:
執行**到return這一行的時候報錯:……
request = urllib2.request(url,headers = headers)
response = urllib2.urlopen(request)
return response.read().decode('gbk')
……
unicodedecodeerror: 'gbk' codec can't decode bytes in position 1-2: illegal multibyte sequence
仔細檢查**沒有發現錯誤,**頁面的編碼也是gbk,後面才發現是由於**將網頁用gzip進行了壓縮。
在瀏覽器除錯視窗檢視network
>response headers
,可以發現以下內容:
對爬取到的網頁內容進行gzip解壓後再進行解碼。content-encoding
:gzip
1.引入以下兩個包
2.修改headers,新增accept-encoding屬性from stringio import stringio
import gzip
3.進行解壓和解碼……
request.add_header('accept-encoding', 'gzip')
……
……
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.獲取預...