爬蟲基礎 urllib庫

2021-08-19 22:24:47 字數 4245 閱讀 2201

# 使用 urllib

# 匯入必要模組

from urllib import request

# 如果需要 url轉碼

from urllib import parse

print(parse.quote('范冰冰'))

%e8%8c%83%e5%86%b0%e5%86%b0
# urlopen

url = ''

rsp = request.urlopen(url)

print(type(rsp))# httpresponse物件

html = rsp.read()# read()方法獲取全部位元組

print(type(html))

#print(html)

#解碼 得到字串

doc = html.decode()

print(type(doc))

#print(doc)

# chardet

# conda install chardet

import chardet

ct = chardet.detect(html)

print(ct)

# # 猜測編碼格式為 utf-8, 信心度99%, 未檢測到語言型別

# 按檢測結果進行解碼

doc = html.decode(ct.get('encoding','utf-8')) #健壯性寫法,預設值

#print(doc)

# response 簡介

print(type(rsp))

# 獲取http響應**

# 200 ok

# 404 找不到頁面

# 403 禁止訪問

# ...

rspo = request.urlopen('')

print(rspo.getcode())

# http兩種訪問方式 get post

# get方式url提交引數給伺服器傳遞資訊,獲取伺服器響應

pr = #放到引數字典中

cpr = parse.urlencode(pr)#轉碼方式

print(cpr)

full_url = url + cpr #拼合完整url

print(full_url)

rsp = request.urlopen(full_url)#發起get請求並得到響應

html = rsp.read()#獲取返回流內容

doc = html.decode()#轉碼得到字串

#print(doc)

# post方式

# 使用 urlopen 的 data 引數

# 更改請求頭資訊

# content-length:資料長度

# 使用urllib.parse.urlencode

base_url = ''

# 準備post引數

kw = input('請輸入英文:')

data =

# url編碼

req_data = parse.urlencode(data).encode()#結果字串編碼成位元組

# 發起訪問,獲得響應

rsp = request.urlopen(base_url,data=req_data)

# 獲取返回文字內容

html = rsp.read().decode()

print(html)

# 反序列化json資料

import json

json_data = json.loads(html)

print(json_data)

#解析結果並顯示

results = json_data['data']

for s in results:

print(s['k'],'',s['v'])

# json  pickle

# 支援python 序列化,反序列化資料格式

import json,pickle

d = (123,'abc')

a =

print(a)

#dump() dumps()

print(json.dumps(a))

s =''

e = json.loads(s)

print(type(e))

print(e.keys())

for label in e.keys():

print(e[label])

print(pickle.dumps(a))

sr =b'\x80\x03}q\x00(x\x06\x00\x00\x00label1q\x01x\x0c\x00\x00\x00hello,pythonq\x02x\x06\x00\x00\x00label2q\x03k

# url編碼

req_data = parse.urlencode(data).encode()#結果字串編碼成位元組

# header

header =

# 構造請求例項,發起訪問,獲得響應

req = request.request(url=base_url,data=req_data,headers=header)

rsp = request.urlopen(req)

# 獲取返回文字內容

# ua, user agent 使用者身份描述

# 描述瀏覽器和裝置資訊

url = ''

headers =

req = request.request(url,headers=header)

rsp = request.urlopen(req)

html = rsp.read().decode()

#print(html)

# ajax

# 豆瓣電影 movie.douban.com

page = 1

limit = 20

start = page*limit

url = ''.format(limit,start)

print(url)

rsp = request.urlopen(url)

htm = rsp.read().decode()

#print(htm)

json_data = json.loads(htm)

for m in json_data['subjects']:

print(m['title'],m['cover_x'],m['rate'])

python 爬蟲基礎篇 urllib庫

衣帶漸寬終不悔,為伊消得人憔悴。urllib.request模組 該模組是urllib的核心模組用於傳送請求,獲取請求返回結果。urlopen 發起請求 response urllib.request.urlopen url,data none,timeout,cafile none,capath ...

Python3 urllib庫爬蟲 基礎

add header 新增報頭url req urllib.request.request url req.add header user agent mozilla 5.0 x11 ubuntu linux x86 64 rv 56.0 gecko 20100101 firefox 56.0 da...

爬蟲之urllib庫

一 urllib的基本使用 import urllib.request response urllib.request.urlopen 獲取當前爬取網頁的狀態碼 print response.getcode decode 解碼 位元組資料轉成字串資料 data response.read decod...