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篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html新增伪类,css3新增伪类有哪些
- 下一篇: LC 数组与字符串 - 两数之和