1. 程式人生 > >python urllib爬取網頁編碼問題

python urllib爬取網頁編碼問題

利用python urllib庫爬取網頁,有時獲得的網頁列印或寫檔案遇到編碼問題,找了許久終於知道為什麼了。

首先利用urlopen()函式獲取網頁物件,再利用info()函式列印網頁的相關資訊,確定網頁的編碼及是否壓縮。

import urllib.request

fp = urllib.request.urlopen('http://www.sina.com')
mybytes = fp.read()
text = mybytes.decode('utf8')
print(text)
報錯


顯示編碼錯誤,剛開始,傻傻地試各種編碼,utf-8,gbk,gb2312,都不行,心裡堵得慌,是在玩我嗎?

so,開始懷疑是bug,但是有的網頁又不會出錯,這就奇怪了,最後google找到了一個解釋,說是返回的網頁資料是壓縮格式,恍然大悟,先列印網頁資訊,看一眼


gzip,網頁是壓縮後的,所以要先解壓,上程式碼

import urllib.request
import zlib

fp = urllib.request.urlopen('http://www.sina.com')
mybytes = fp.read()
decompressed_data = zlib.decompress(mybytes ,16+zlib.MAX_WBITS)
text = decompressed_data.decode('utf8')
print(text)
print(fp.info())
結果


Google問題原版

相關推薦

python urllib網頁編碼問題

利用python urllib庫爬取網頁,有時獲得的網頁列印或寫檔案遇到編碼問題,找了許久終於知道為什麼了。 首先利用urlopen()函式獲取網頁物件,再利用info()函式列印網頁的相關資訊,確定網頁的編碼及是否壓縮。 import urllib.request f

python動態網頁

匹配 應用 https select idt beautiful 檢查 選擇 path 簡介 有時候,我們天真無邪的使用urllib庫或Scrapy下載HTML網頁時會發現,我們要提取的網頁元素並不在我們下載到的HTML之中,盡管它們在瀏覽器裏看起來唾手可得。 這說明我們想

使用webdriver+urllib網頁數據

環境 都是 mac net www med har turn 當我 urilib是python的標準庫,當我們使用Python爬取網頁數據時,往往用的是urllib模塊,通過調用urllib模塊的urlopen(url)方法返回網頁對象,並使用read()方法獲得url的h

Python爬蟲 - 網頁文字資訊並儲存(美文的與儲存)

 本篇文章所包含的主要內容:  使用requests模組實現對網頁以字串的形式儲存 使用open()、write()、close()函式實現檔案的開啟與寫入 使用if() 條件語句對所需要的文字資訊進行過濾以形成一個專用提取函式 &n

python簡單網頁文字操作體會

自上次成功嘗試爬取了靜態頁面的圖片之後,本白又跟著另一篇博文做了一下爬取網頁文字的嘗試。基本程式碼都是來源於該篇博文,本人只是做了輕微修改。 簡單的實現爬蟲爬取網頁文字和圖片 以python3為背景,這裡還是先定義一個讀取html頁面資訊的函式: import urllib.

python初學-網頁資料

python初學-爬取網頁資料 1,獲取網頁原始碼 import urllib url = 'http://www.163.com' wp = urllib.urlopen(url) file_content = wp.read() print file_content 2,

python爬蟲——網頁的中文

# 爬取網頁的中文內容 from urllib import request from bs4 import BeautifulSoup import pandas as pds import xlrd import docx #讀取excel def excel(fname):

Python爬蟲——網頁中的圖片小試牛刀

Preface:以往爬取文字,這次需要爬取圖片pdf,先上手一個例子,爬取pdf,先取得url,然後通過urllib.urlretrieve函式將url的網頁內容遠端下載到本地,第一個引數為url,第二個引數為檔名(程式碼中有誤),第三個引數為回撥函式,可以顯示下載進度。另

Python爬蟲網頁資料並存儲(一)

環境搭建 1.需要事先安裝anaconda(或Python3.7)和pycharm *anaconda可在中科大映象下下載較快 2.安裝中遇到的問題: *anaconda(記得安裝過程中點新增路徑到path裡,沒新增的話手動新增: 計算機右鍵屬性——高階系統設

python爬蟲網頁桌布圖片(彼岸桌面網唯美圖片)

今天想給我的電腦裡面多加點桌布,但是嫌棄一個個儲存太慢,於是想著寫個爬蟲直接批量爬取,因為爬蟲只是很久之前學過一些,很多基礎語句都不記得了,於是直接在網上找了個有基礎操作語句的爬蟲程式碼,在這上面進行修改以適應我的要求和爬取的網頁需求 注意:這次爬取的

python網頁數據總結(一)

固定 環境變量 http lec 了解 線程 rom 第一個 正則 今天嘗試使用python,爬取網頁數據。因為python是新安裝好的,所以要正常運行爬取數據的代碼需要提前安裝插件。分別為requests Beautifulsoup4 lxml 三個插件。 因

python網頁—網站編碼

在爬取網站之前需要檢視網頁的編碼方式,對應的,通過檢視網頁原始碼,在網站頁面配合按鍵F12 ctrl+F 搜尋"charset"可找到如下類似資訊:<meta http-equiv="Conten

python urllib, urllib2實現登陸和簡單網頁(個人坑點筆記)

不想做重複的事情,對於已經寫得比較詳細的我就不再自己重新寫了,直接引用,希望原作者諒解(反正直接貼的網站,大概沒事吧~) 主要是記一些自己碰到的坑 實現登陸其實主要是用好那個cookiejar

一個鹹魚的Python爬蟲之路(三):網頁圖片

you os.path odin 路徑 生成 存在 parent lose exist 學完Requests庫與Beautifulsoup庫我們今天來實戰一波,爬取網頁圖片。依照現在所學只能爬取圖片在html頁面的而不能爬取由JavaScript生成的圖。所以我找了這個網站

python+selenium+PhantomJS網頁動態加載內容

use for ive comm 自動化測試 mac os x page 影響 blank 一般我們使用python的第三方庫requests及框架scrapy來爬取網上的資源,但是設計javascript渲染的頁面卻不能抓取,此時,我們使用web自動化測試化工具Selen

python網頁圖片

ima com col list https pytho 表達式 images 5% 在Python中使用正則表達式,一個小小的爬蟲,抓取百科詞條網頁的jpg圖片。下面就是我的代碼,作為參考: #coding=utf-8 # __author__ = ‘Hinfa‘ im

urllib基礎-利用網站結構網頁-百度搜索

ont 獲取網頁 不能 style 其中 baidu TP bsp 拼接   有的時候爬取網頁,可以利用網站額結構特點爬取網頁   在百度搜索框中輸入搜索內容,單擊搜索,瀏覽器會發送一個帶有參數的url請求。嘗試刪除其中的一些參數,只剩下wd這個參數。發現wd是搜索內容。這

Python 網頁中JavaScript動態添加的內容(二)

python tab sta exe div int rom ava script 使用 selenium + phantomjs 實現 1、準備環境 selenium(一個用於web應用程測試的工具)安裝:pip install seleniumphantomjs(是

Python 爬蟲技巧1 | 將網頁中的相對路徑轉換為絕對路徑

1.背景: 在爬取網頁中的過程中,我對目前爬蟲專案後端指令碼中拼接得到絕對路徑的方法很不滿意,今天很無意瞭解到在python3 的 urllib.parse模組對這個問題有著非常完善的解決策略,真的是上天有眼,感動! 2.urllib.parse模組 This module define

Python 爬蟲 單個基因 表格資料的生物學功能 (urllib+正則表示式):

Python 爬蟲 爬取單個基因的生物學功能(urllib+正則表示式): import re import urllib from urllib import request url = 'https://www.ncbi.nlm.nih.gov/gene/?term=FUT1'