日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python url拼接_python学习笔记——urllib篇

發布時間:2025/3/15 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python url拼接_python学习笔记——urllib篇 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 request模塊:用于打開和讀取 URL。

使用urllib.request.urlopen(url,data=None,[timeout,]*,cafile=None, capath=None, cadefault=False, context=None)方法便可以簡單地把網頁抓取下來。

import urllib.request import sslssl._create_default_https_context = ssl._create_unverified_context response = urllib.request.urlopen('https://www.baidu.com') print(response.status)

正常run完代碼以后,會打印出訪問成功的狀態碼,也就是200。

(PS:ssl._create_default_https_context = ssl._create_unverified_context 這是為了全局取消證書驗證。因為在python2.7.9之后每當urllib.urlopen請求一個https 的鏈接的時候,都會驗證一次SSL證書。詳細解析請看https://blog.csdn.net/moonhillcity/article/details/52767999。)

返回的response是一個HTTPResponse類型的對象。

(關于HTTPResponse類型的對象,在python官方文檔里面介紹得很詳細感興趣的可以去看一下。https://docs.python.org/3/library/http.client.html)

除了必傳參數‘url’以外,我們還有data,timeout,context,cafile,capath,cadefault這些參數。

data用于設置請求需要的參數。

timeout用于設置超時時間。

context用于SSL的設置,所以context里面接收的參數一定是ssl.SSLContext類型。

cafile和capath分別指定了CA證書和它的路徑。

cadefault被棄用了,所以我們默認傳False值。

2 parse模塊:用于url的解析,合并,編碼,解碼 。

from urllib.parse import urlparse o = urlparse('http://www.cwi.nl:80/%7Eguido/Python.html?data=data') ?print(o)

使用urllib.parse.urlparse(urlstring,scheme ='',allow_fragments = True )方法把URL解析成為6個部分。

使用urllib.parse.urlunparse(parts)方法可以還原urllib.parse.urlparse分解出來的元組,使其從新拼接成為一個URL。

使用

urllib.parse.parse_qs(qs,keep_blank_values = False,strict_parsing = False,encoding ='utf-8',errors ='replace',max_num_fields = None )

方法解析URL查詢模塊query的參數,并返回字典。

使用

urllib.parse.parse_qsl(qs, keep_blank_values=False, strict_parsing=False, encoding='utf-8', errors='replace', max_num_fields=None)

方法解析URL查詢模塊query的參數,并返回列表。

import urllib.parse ? url = "https://www.baidu.com?query=param" url_change = urllib.parse.urlparse(url) query = url_change.query lst_query = urllib.parse.parse_qsl(query) dict_query = urllib.parse.parse_qs(query) print("使用parse_qsl返回列表 :", lst_query) print("使用parse_qs返回字典 : ", dict_query)

urllib.parse.urlsplit(urlstring, scheme='', allow_fragments=True)方法和urllib.parse.urlparse方法的用法一致,和urllib.parse.urlparse不一樣的地方在于urllib.parse.urlsplit方法沒有params了。

使用urllib.parse.urlunsplit(parts)方法還原urllib.parse.urlsplit方法所解析的URL。

urllib.parse.urljoin(base, url, allow_fragments=True)方法用于URL的拼接。

import urllib.parse print(urllib.parse.urljoin("https://www.baidu.com/hello.html","world.html"))

urllib.parse.urldefrag(url)方法用于識別fragment。

import urllib.parse print(urllib.parse.urldefrag("http://www.baidu.com?query=arg#frag"))

urllib.parse.unwrap(url)方法用于把包裝好的URL解析成普通的URL。(<URL:type://host/path> --> 'type://host/path')

import urllib.parse print(urllib.parse.unwrap("<URL:http://www.baidu.com/2020/01/index.html>"))

3 error模塊:定義了由request所引發的異常,而URLError是error模塊的基礎異常類。

import urllib.request import urllib.error import ssl ? ssl._create_default_https_context = ssl._create_unverified_context try:res = urllib.request.urlopen('https://yichang.com/index.htm') except urllib.error.URLError as e:print(e.reason)print(e.code)print(e.headers)

URLError類主要有reason錯誤原因,code狀態碼和headers請求頭3個屬性組成。

4 robotparser 模塊:主要用于robots.txt的分析。

robots.txt簡單地說,就是記錄一個網站的哪些地方可以被爬蟲爬,哪些地方不能被爬的一個文檔。

import urllib.robotparser ? rp = urllib.robotparser.RobotFileParser() rp.set_url("http://www.musi-cal.com/robots.txt") rp.read() rrate = rp.request_rate("*") rrate.requests rrate.seconds rp.crawl_delay("*") rp.can_fetch("*", "http://www.musi-cal.com/cgi-bin/search?city=San+Francisco") rp.can_fetch("*", "http://www.musi-cal.com/")

set_url(url)方法用于設置指向 robots.txt 文件的 URL。

read()方法用于讀取 robots.txt URL 并將其輸入解析器。

parse(lines)方法用于解析行參數。

can_fetch(useragent, url)方法用于如果允許 useragent 按照被解析 robots.txt 文件中的規則來獲取 url 則返回 True。

mtime()方法用于返回最近一次獲取 robots.txt 文件的時間。這適用于需要定期檢查 robots.txt 文件更新情況的長時間運行的網頁爬蟲。

modified()方法用于將最近一次獲取 robots.txt 文件的時間設置為當前時間。

crawl_delay(useragent)方法用于為指定的 useragent 從 robots.txt 返回 Crawl-delay 形參。如果此形參不存在或不適用于指定的 useragent 或者此形參的 robots.txt 條目存在語法錯誤,則返回 None。

request_rate(useragent)方法用于以 named tuple RequestRate(requests, seconds) 的形式從 robots.txt 返回 Request-rate 形參的內容。如果此形參不存在或不適用于指定的 useragent 或者此形參的 robots.txt 條目存在語法錯誤,則返回 None。

site_maps()方法用于以 list() 的形式從 robots.txt 返回 Sitemap 形參的內容。如果此形參不存在或者此形參的 robots.txt 條目存在語法錯誤,則返回 None。

總結

以上是生活随笔為你收集整理的python url拼接_python学习笔记——urllib篇的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。