亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

python之最常用的模塊一籮筐

系統(tǒng) 2136 0

python之最常用的模塊一籮筐

            
               其實(shí)我挺羨慕火車的
 為什么?
 他們連擦肩而過都那么久

            
          

request模塊:

requests 是一個功能強(qiáng)大、簡單易用的 HTTP 請求庫

  • 請求
            
              requests.get('http://httpbin.org/get')
requests.post('http://httpbin.org/post')
requests.put('http://httpbin.org/put')
requests.delete('http://httpbin.org/delete')
requests.head('http://httpbin.org/get')
requests.options('http://httpbin.org/get')

            
          
  • 響應(yīng)
            
              r.url:返回請求網(wǎng)站的 URL
r.status_code:返回響應(yīng)的狀態(tài)碼
r.encoding:返回響應(yīng)的編碼方式
r.cookies:返回響應(yīng)的 Cookie 信息
r.headers:返回響應(yīng)頭
r.headers[‘host’]:返回響應(yīng)頭某屬性
r.content:返回 bytes 類型的響應(yīng)體
r.text:返回字符串,也就是頁面文本
r.content:  返回內(nèi)容的二進(jìn)制形式  
r.json():返回josn字典


            
          

最常用也就get/post,常用參數(shù)

            
              url 	
cookie  
params 	get形式的參數(shù)
data 	post形式的參數(shù)
headers 	修改請求頭,偽裝瀏覽器等等
timeout 	超時時間
proxies 	設(shè)置代理

            
          

舉個荔枝,請求百度

            
              # encoding:utf-8
import requests

head = {
    'User-Agent': '',
    'Referer': '11111'
}

values = {
    'name': 'cat',
    'id': '1'
}

proxy = {"http": "http://127.0.0.1:8080"}
cookie = {'name': 'gggg'}

site = "http://www.baidu.com/"
# 請求方式主要為get傳值用params,post傳值用data
#response = requests.get(url=site,headers=head,params=values,proxies=proxy,cookies=cookie, timeout=3)
response = requests.post(url=site, headers=head, data=values, proxies=proxy, cookies=cookie)

print(response)
print(response.url)
print(response.cookies)
print(response.status_code)
print(response.encoding)
print(response.content)
print(response.headers)
print(response.url)
print(response.text)
print(response.json())
print(response.history)


            
          

python之最常用的模塊一籮筐_第1張圖片 python之最常用的模塊一籮筐_第2張圖片

BeautifulSoup模塊:

簡單來說,Beautiful Soup是python的一個庫,最主要的功能是從網(wǎng)頁抓取數(shù)據(jù),將 html 解析為對象進(jìn)行處理。
BeautifulSoup 不僅支持 HTML 解析器,還lxml,XML,html5lib 解析器,需要安裝相應(yīng)的庫。如果不安裝,則 Python 會使用 Python 默認(rèn)的解析器,其中 lxml 解析器推薦
python之最常用的模塊一籮筐_第3張圖片
一般BS4將HTML文檔對象會轉(zhuǎn)換成如下四種類型組合的文檔樹:

  • Tag:標(biāo)簽對象
  • NavigableString:字符內(nèi)容, soup.p.string
  • BeautifulSoup:表示的是一個文檔的全部內(nèi)容
  • Comment:特殊類型的NavigableString, 如果標(biāo)簽中有注釋,則是 comment 對象,可通過 if type(soup.p.string) != bs4.element.Comment:.判斷

主要還是Tag也就是標(biāo)簽,如html頁面中的

,

等等都是tag,而Beautiful Soup可以輕松獲取 各種Tags
如:

              
                soup.title  
soup.head
soup.a  
soup.p
soup.p.name              #p標(biāo)簽的名字
soup.p.string            #p標(biāo)簽的內(nèi)容
soup.p.attrs             #p標(biāo)簽的屬性,返回的是一個字典
soup.p['class']          #p標(biāo)簽的class屬性

              
            

python之最常用的模塊一籮筐_第4張圖片 python之最常用的模塊一籮筐_第5張圖片

需求總是多樣的,也可以利用find() 和 find_all()是這兩個函數(shù),可以準(zhǔn)確的通過標(biāo)簽的不同屬性輕松地過濾 HTML 頁面,查找需要的標(biāo)簽組或單個標(biāo)簽。唯一的區(qū)別是 find_all() 方法的返回結(jié)果是值包含一個元素的列表,而 find() 方法直接返回結(jié)果.這個語句可以完美詮釋兩者關(guān)系:
soup.find_all('title', limit=1)==soup.find('title')
主要介紹find_all() 方法搜索當(dāng)前tag的所有tag子節(jié)點(diǎn),并判斷是否符合過濾器的條件。
find_all( name , attrs , recursive , text , **kwargs )

              
                  name :查找所有名字為 name 的tag,字符串對象會被自動忽略掉;
  attrs:根據(jù)屬性查詢,使用字典類型;
  text :可以搜搜文檔中的字符串內(nèi)容.與 name 參數(shù)的可選值一樣, text 參數(shù)接受字符串 , 正則表達(dá)式 , 列表, True ;
  recursive:調(diào)用tag的 find_all() 方法時,Beautiful Soup會檢索當(dāng)前tag的所有子孫節(jié)點(diǎn),如果只想搜索tag的直接子節(jié)點(diǎn),可以使用參數(shù) recursive=False ;
  limit:find_all() 方法返回全部的搜索結(jié)構(gòu),如果我們不需要全部結(jié)果,可以使用 limit 參數(shù)限制返回結(jié)果的數(shù)量.效果與SQL中的limit關(guān)鍵字類似,當(dāng)搜索到的結(jié)果數(shù)量達(dá)到 limit 的限制時,就停止搜索返回結(jié)果;
  class_ :通過 class_ 參數(shù)搜索有指定CSS類名的tag,class_ 參數(shù)同樣接受不同類型的 過濾器 ,字符串,正則表達(dá)式,方法或 True。

              
            

是不是想說什么亂七八糟的,舉個栗子看看,看完還可以吃了

              
                # encoding:utf-8
from bs4 import BeautifulSoup
import re

html = '''


	
		
                
                
	
'''
soup = BeautifulSoup(html, 'html.parser')
# 根據(jù)name查詢節(jié)點(diǎn)
print("name為ul的節(jié)點(diǎn):", soup.find_all(name='ul'))
# 根據(jù)attrs查詢節(jié)點(diǎn)
print('根據(jù)attr查詢節(jié)點(diǎn):', soup.find_all(attrs={'name': 'one'}))
print('根據(jù)attr查詢節(jié)點(diǎn):', soup.find_all(attrs={'class': 'cls5'}))
# 根據(jù)text查詢節(jié)點(diǎn)
print('根據(jù)text查詢節(jié)點(diǎn):', soup.find_all(text='3333333333'))
print('根據(jù)text查詢節(jié)點(diǎn)1:', soup.find_all(text=re.compile("abc")))
# 根據(jù)class_查詢
print('根據(jù)class_查詢節(jié)點(diǎn):', soup.find_all(class_='cls3'))
# 根據(jù)id查詢
print('根據(jù)id查詢節(jié)點(diǎn):', soup.find_all(id='aaa'))
# 設(shè)置limit
print('不設(shè)置limit:', soup.ul.find_all(name='li'))
print('設(shè)置limit為1:', soup.ul.find_all(name='li', limit=2))

              
            

python之最常用的模塊一籮筐_第6張圖片
如果取其中href,可以 link.a['href'] or link.a.get('href')
python之最常用的模塊一籮筐_第7張圖片
也可以通過css類名查找
在查找的時候,如果是標(biāo)簽名不加任何修飾,如果是類名前加點(diǎn),如果id名前加#
利用 soup.select() , 返回類型是list
舉個例子:

              
                
                  111
                
                

通過標(biāo)簽名查找
print(soup.select('title'))   ##打印出標(biāo)簽是title的
通過類名查找
print(soup.select('.b'))      ##打印出class類名是b的
通過id名查找
print(soup.select('#abc'))  ##打印出id名是abc的
組合查找
print(soup.select('p #abc’ b'))  ##打印出p標(biāo)簽中,id=abc,class=b的
屬性查找(注意屬性和標(biāo)簽屬于同一節(jié)點(diǎn).)
print(soup.select("a[class='b']"))  ##打印出a標(biāo)簽中class屬性是b的
以上的select方法返回的結(jié)果都是列表形式,可以遍歷形式輸出,然后用get_text()方法來獲取他的內(nèi)容
    for i in soup.select('a'):
        print(i.get_text())   ##打印出a標(biāo)簽中的文本


              
            

python之最常用的模塊一籮筐_第8張圖片

urlparse模塊:

  • urlparse.urlparse模塊主要就是將url解析為6個組件,并以元組形式返回,返回的6個部分,分別是:scheme(協(xié)議)、netloc(網(wǎng)絡(luò)位置)、path(路徑)、params(路徑段參數(shù))、query(查詢)、fragment(片段)。
    舉個例子:
            
              Import urlparse
	a = urlparse.urlparse(‘https:www.cat.com:8080/cat.php?cat=1’)
輸出的結(jié)果為
ParseResult(scheme='https', netloc='www.cat.com:8080', path='/cat.php', params='', query='cat=1, fragment='')
Print a.netloc 為 www.cat.com
Print a.hostname 為 www.cat.com
Print a.port 為 8080


            
          
  • urlparse.urlsplit和urlparse差不多,將url分為5部分,返回一個包含5個字符串項(xiàng)目的元組:協(xié)議、位置、路徑、查詢、片段
  • urlparse.urljoin主要是拼接URL,它以base作為其基地址,然后與url中的相對地址相結(jié)合組成一個絕對URL地址.最重要就是看/進(jìn)行替換添加,如果最后路徑?jīng)]有/,即追溯到上一個/進(jìn)行替換添加
    舉個例子:
            
              Import urlparse
A = urlparse.urljoin('http://www.cat.com/cat.php,'dog.php')
輸出為
http://www.cat.com/dog.php
A = urlparse.urljoin('http://www.cat.com/cat.php/,'dog.php')
輸出為
http://www.cat.com/cat.php/dog.php


            
          

os、sys模塊:

OS模塊 提供方便的使用操作系統(tǒng)函數(shù)的方法,
SYS 模塊 提供可供訪問由解釋器使用或維護(hù)的變量和與解釋器進(jìn)行交互的函數(shù)。
簡單來說os負(fù)責(zé)程序與操作系統(tǒng)的交互,提供程序訪問操作系統(tǒng)底層的接口;sys主要負(fù)責(zé)程序與python解析器的交換,提供一系列函數(shù)與變量,用于操控pyhton的運(yùn)行環(huán)境。

  • os 常用方法
            
              os.name:返回當(dāng)前使用平臺的代表字符,Windows用 nt 表示,Linux用 posix 表示
?  os.listdir(path):列舉目錄下的所有文件。返回的是list類型。
?  os.getcwd():查看當(dāng)前所在路徑。
?  os.system(command):函數(shù)用來運(yùn)行shell命令。
?  os.curdir:返回當(dāng)前目錄('.')
?  os.chdir(dirname):改變工作目錄到dirname
?  os.path.isfile(path):檢驗(yàn)給出的路徑是不是文件。
?  os.path.isdir(path):檢驗(yàn)給出的路徑是不是目錄。
?  os.path.exists():用來檢驗(yàn)給出的路徑是否真地存在
?  os.path.dirname(path):返回文件路徑
?  os.path.basename(path):返回文件名
?  os.path.join(path, name):連接目錄與文件名或目錄,使用‘\’連接
?  os.path.splitext():分離文件名與擴(kuò)展名
?  os.path.split(path):將path分割成目錄和文件名二元組返回。
?  os.path.normpath(path):規(guī)范path字符串形式
?  os.path.abspath(name):獲得絕對路徑
?  os.path.getsize(name):獲得文件大小,如果name是目錄返回0L
?  os.mkdir(path):創(chuàng)建path目錄(只能創(chuàng)建一級目錄)
?  os.makedirs(path):創(chuàng)建多級目錄
?  os.remove(path):函數(shù)用來刪除一個文件。
?  os.rmdir(path):刪除path目錄(只能刪除一級目錄,如'/Users/XXX/SSS',只刪除SSS目錄)
?  os.removedirs(path):刪除多級目錄(如'/Users/XXX/SSS',必須為空目錄,刪除SSS、XXX目錄)
?  os.path.getmtime(path):返回文件或目錄的最后修改時間,結(jié)果為秒數(shù)
?  os.path.getatime(path):返回文件或目錄的最后訪問時間,結(jié)果為秒數(shù)
?  os.path.getctime(path):返回文件或目錄得創(chuàng)建時間,結(jié)果為秒數(shù)
?  os.sep:返回當(dāng)前操作系統(tǒng)特定的路徑分隔符
?  os.linesep:返回當(dāng)前平臺使用的行終止符
?  os.extsep:返回文件名與擴(kuò)展名的分隔符


            
          
  • sys 常用方法
    sys.argv 實(shí)現(xiàn)從程序外部向程序傳遞參數(shù)。簡單來說就是cmd中命令行參數(shù),返回是一個List,第一個元素是程序名,第二個即輸入第二個參數(shù),以此類推。
            
              Python  1.py  www.cat.com  10
Sys.argv[0]=1.py 
Sys.argv[1]=www.cat.com 
Sys.argv[2]=10

sys.modules.keys()   #返回所有已經(jīng)導(dǎo)入的模塊列表 
sys.exc_info()    #獲取當(dāng)前正在處理的異常類,exc_type、exc_value、exc_traceback當(dāng)前處理的異常詳細(xì)信息 
sys.exit(n)    #程序,正常退出時exit(0) 
sys.hexversion    #獲取Python解釋程序的版本值,16進(jìn)制格式如:0x020403F0 
sys.version    #獲取Python解釋程序的版本信息 
sys.maxint     #最大的Int值 
sys.maxunicode    #最大的Unicode值 
sys.modules    #返回系統(tǒng)導(dǎo)入的模塊字段,key是模塊名,value是模塊 
sys.path     #返回模塊的搜索路徑,初始化時使用PYTHONPATH環(huán)境變量的值 
sys.platform    #返回操作系統(tǒng)平臺名稱 
sys.stdout     #標(biāo)準(zhǔn)輸出  
sys.stdin     #標(biāo)準(zhǔn)輸入 
sys.stderr     #錯誤輸出  
sys.exc_clear()   #用來清除當(dāng)前線程所出現(xiàn)的當(dāng)前的或最近的錯誤信息 
sys.exec_prefix   #返回平臺獨(dú)立的python文件安裝的位置 
sys.byteorder    #本地字節(jié)規(guī)則的指示器,big-endian平臺的值是'big',little-endian平臺的值是'little' 
sys.copyright    #記錄python版權(quán)相關(guān)的東西 
sys.api_version   #解釋器的C的API版本 
sys.version_info   #獲取Python解釋器的版本信息 
sys.getwindowsversion  #獲取Windows的版本
sys.getdefaultencoding  #返回當(dāng)前你所用的默認(rèn)的字符編碼格式
sys.getfilesystemencoding #返回將Unicode文件名轉(zhuǎn)換成系統(tǒng)文件名的編碼的名字
sys.setdefaultencoding(name) #用來設(shè)置當(dāng)前默認(rèn)的字符編碼
sys.builtin_module_names #Python解釋器導(dǎo)入的模塊列表 
sys.executable    #Python解釋程序路徑 
sys.stdin.readline   #從標(biāo)準(zhǔn)輸入讀一行,sys.stdout.write("a") 屏幕輸出a


            
          

optparse模塊:

optparse可以說是sys.argv的升級版主要用來為腳本傳遞cmd中命令參數(shù),采用預(yù)先定義好的選項(xiàng)來解析命令行參數(shù)。

            
              parser.add_option()是為解析器添加選項(xiàng),定義命令行參數(shù)常用的五種即
		action:存儲方式,分為三種store、store_false、store_true
        type:類型
        dest:存儲的變量
        default:默認(rèn)值
        help:幫助信息


            
          

舉個橘子:
簡單來說就是創(chuàng)建optparse對象parser,使用add_option()來定義命令行參數(shù),最后利用parse_args()來解析命令行。

            
              # coding=utf-8
import optparse

parser=optparse.optionParser("python %prog -u host -p port")  #創(chuàng)建一個對象實(shí)例,()中用于cmd提示,可以省略 %prog=程序名。
parser.add_option('-u',dest='Host',type='string',help='test host')   
parser.add_option('-p',dest='Ports',type='string',help='test ports',default="80,8080")  ##需要的命令行參數(shù) 默認(rèn)-h查看
(options,args)=parser.parse_args() # 傳遞一個參數(shù)列表給parse_args(),只要知道命令行參數(shù)名即dest,如host,就可以訪問其對應(yīng)的值:options.host。
print(options.Host)
print(options.Ports)


            
          

python之最常用的模塊一籮筐_第9張圖片

socket模塊:

Socket也就是套接字,使用的時候每一個socket,都被綁定特定的IP地址和端口,主要實(shí)現(xiàn)網(wǎng)絡(luò)上兩個程序上的數(shù)據(jù)交換。
簡單來說就是本地建立socket,被訪問的服務(wù)器也建立一個socket監(jiān)聽,兩端用各種的socket及進(jìn)行數(shù)據(jù)交換

  • 服務(wù)端
    首先要創(chuàng)建sockert對象
            
              Sock_server = socket.socket(family,type)
Family參數(shù)代表地址家族,分為AF_INET(IPV4網(wǎng)絡(luò)通信)和AF_UNIX(同一主機(jī)進(jìn)程通信)和AF_INET6(IPV6通信)
Type參選為套接字類型,分為SOCK_STREAM(tcp流套接字)和SOCK_DGRAM(udp數(shù)據(jù)包套接字)和SOCK_RAW(可以監(jiān)聽所有數(shù)據(jù)幀)和SOCKE_RDM(可靠udp形式,保證交付數(shù)據(jù))


            
          

舉個蘋果吧,直接創(chuàng)建個socket服務(wù)端

            
              # coding=utf-8
import socket

#服務(wù)端
sock_server = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #創(chuàng)建一個ipv4,tcp連接對象
sock_server.bind(("127.0.0.1",8888)) #綁定主機(jī)名和端口
sock_server.listen(2) #設(shè)置服務(wù)端,最多可以被多少客戶連接
connection,address =sock_server.accept()#服務(wù)端通過accept等待客戶請求連接,連接建立時,返回新的connection對象(通過這個新的對象與客戶端通訊),和address客戶端地址
connection.send('i am servce ')             #服務(wù)器和客戶端通過“send”發(fā)送byte和“recv”接受方法通信:
mess = connection.recv(1024) #接受多大字節(jié)
print(mess)
connection.close()				#先關(guān)閉新對象,在關(guān)閉最開始對象
sock_server.close()



            
          
  • 客戶端
            
              # coding=utf-8
import socket

sock_client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock_client.connect(("127.0.0.1",8888))   #使用connect方法連接服務(wù)器
mess = sock_client.recv(1024)
print(mess)
sock_client.send('i am client')
sock_client.close()


            
          

在這里插入圖片描述

thread和threading模塊:

            
              **余生很長,請多指教。**

            
          

python之最常用的模塊一籮筐_第10張圖片


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美一级永久免费毛片在线 | 91视频大全 | 国产精品日本一区二区在线播放 | 99久久综合 | 九九热中文字幕 | 精品二区| 色片免费| 99久久免费费视频在线观看 | 日韩一区精品 | 国产欧美亚洲精品 | 精品动漫一区二区三区 | 欧美xxx午夜免费视频 | 日本三级做a全过程在线观看 | 99麻豆久久久国产精品免费 | 亚洲 欧美 国产另类首页 | 国产目拍亚洲精品一区麻豆 | 97婷婷狠狠成人免费视频 | 香蕉碰碰人人a久久动漫精品 | 伊人伊狠亚洲综合影院 | 九九精品免视频国产成人 | 国产亚洲综合色就色 | 91在线免费视频观看 | 尤物视频在线观看视频 | 国产在线精品二区赵丽颖 | 何以笙箫默在线观看 | 久草小区二区三区四区网页 | 欧美性xxx| 中文字幕丝袜在线56页 | 中国国产成人精品久久 | 亚洲视频在线看 | 国产伦乱 | 国产欧美日本亚洲精品五区 | 欧美一区二区久久精品 | 2020年国产高中毛片在线视频 | 四虎国产精品免费观看 | 人人爽天天碰天天躁夜夜躁 | 欧美成人在线观看 | 亚洲欧美一区二区三区不卡 | 国产精品揄拍100视频 | 99久久精品免费看国产一区二区 | 欧美精品国产综合久久 |