urllib模塊

urllib模塊html


urllib模塊是python中自帶的一個基於爬蟲的模塊。可使用代碼模擬瀏覽器發起請求python

 

# 需求:爬取搜狗首頁的頁面數據

import urllib.request

#1.指定url
url = 'https://www.sogou.com/'

#2.發起請求:urlopen能夠根據指定的url發起請求,切返回一個響應對象
response = urllib.request.urlopen(url=url)

#3.獲取頁面數據:read函數返回的就是響應對象中存儲的頁面數據(byte)
page_text = response.read()

#4.持久化存儲
with open('./sougou.html','wb') as fp:
    fp.write(page_text)
    print('寫入數據成功')

 

# 需求:爬取指定詞條所對應的頁面數據

import urllib.request
import urllib.parse

#指定url
url = 'https://www.sogou.com/web?query='
#url特性:url不能夠存在非ASCII編碼的字符數據
word = urllib.parse.quote("人民幣")
url += word #有效的url

#發請求
response = urllib.request.urlopen(url=url)


#獲取頁面數據
page_text = response.read()


with open('renminbi.html','wb') as fp:
    fp.write(page_text)

 反爬機制:網站檢查請求的UA,若是發現UA是爬蟲程序,則拒絕提供網站數據。

User-Agent(UA):請求載體的身份標識。

反反爬機制:假裝爬蟲程序請求的UA

import urllib.request

url = 'https://www.baidu.com/'

#UA假裝
#1.子制定一個請求對象
headers = {
    #存儲任意的請求頭信息
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36'
    
}
#該請求對象的UA進行了成功的假裝
request = urllib.request.Request(url=url,headers=headers)

#2.針對自制定的請求對象發起請求
response = urllib.request.urlopen(request)

print(response.read())

urlib模塊發起的post請求web

  • 需求:爬取百度翻譯的翻譯結果
import urllib.request
import urllib.parse

#1.指定url
url = 'https://fanyi.baidu.com/sug'

#post請求攜帶的參數進行處理  流程:
#1.將post請求參數封裝到字典
data = {
    'kw':'西瓜'
}
#2.使用parse模塊中的urlencode(返回值類型爲str)進行編碼處理
data = urllib.parse.urlencode(data)
#3.將步驟2的編碼結果轉換成byte類型
data = data.encode()

#2.發起post請求:urlopen函數的data參數表示的就是通過處理以後的post請求攜帶的參數
response = urllib.request.urlopen(url=url,data=data)

response.read()
相關文章
相關標籤/搜索