Python爬蟲——總結小知識點

urllib入門

mport urllib.request
#向指定的url地址發送請求,並返回服務器響應的類文件對象
response = urllib.request.urlopen("http://www.baidu.com/")
#服務器返回的類文件對象支持python文件對象的操作方法
#read()方法就是讀取文件裏面的全部內容,返回字符串
#此方法的缺點是不能構造,headers不能添加

#所以如下
headers = {
     "User-Agent":"Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11"}

requests = urllib.request.Request("http://www.baidu.com/",headers=headers)
response = urllib.request.urlopen(requests)
print(response.read())

#response響應文件除了支持文件操作方法外還支持一下方法

#4服務器頁面沒找到 5服務器本身有問題
print(response.getcode())
#防止重定向 ,返回實際數據的url
print(response.geturl())
#返回服務器響應的http報頭
print(response.getinfo())

下一個user-agent列表

import urllib.request
import random
def load_baidu():
    url="http://www.baidu.com"
    user_agent_list=[

        "Mozilla / 5.0(Windows;U;WindowsNT6.1;en - us) AppleWebKit / 534.50(KHTML, likeGecko) Version / 5.1Safari / 534.50",
        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36",
        "Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11"

    ]
    #每次請求的地址都是不一樣的
    random_user_agent = random.choice(user_agent_list)
    request = urllib.request.Request(url)
    #增加對應的響應頭
    request.add_header("User-Agent",random_user_agent)
    #請求數據
    #response = urllib.request.urlopen(request)
    print(request.headers)


load_baidu()

解決urlencode中的字典問題

import urllib.request
import string
import urllib.parse
def get_params():
    url="https://www.baidu.com/s?"
    params={
        "wd":"中文",
        "key":"zhang",
        "value":"san"
}
str_params = urllib.parse.urlencode((params))
#wd=%E4%B8%AD%E6%96%87&key=zhang&value=san上面這個函數的作用
print(str_params)
 final_url=url+str_params
    #將帶有中文的url,轉義成計算機可識別的url
    end_url = urllib.parse.quote(final_url,safe=string.printable)
    response = urllib.request.urlopen(end_url)
    data = response.read().decode("utf-8")
    print(data)
get_params()
————————————————
版權聲明:本文爲CSDN博主「(๑• . •๑)框」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_45051787/article/details/104289241
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章