①相關的庫:urlib、urlib二、requestspython
python中自帶urlib和urlib2,他們主要使用函數以下:編程
urllib:json
urlib.urlopen() urlib.urlretrieve() urlretrieve(url,filename=None,reporthbook=None,data=None)
urllib2:ubuntu
urllib2.urlopen() urllib2.Requests()
urllib和urllibs2的使用方法不一樣的是:urllib能夠用來下載文件、而urllib2用來定製請求頭cookie
urllib.urlretrieve下載文件:網絡
import urllib,urllib2 urllib.urlretrieve('https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png',filename='/home/ubuntu/Test/a.png')
成功後會返回:app
('/home/ubuntu/Test/baidu.png', <httplib.HTTPMessage instance at 0x7f14f228edc0>)
urllib.requests模塊ide
咱們能夠經過requests發送一些網絡請求:函數
r=request.get("http://www.baidu.com") #GET r=request.post("http://www.baidu.com") #POST r=request.put("http://www.baidu.com") #PUT r=request.delete("http://www.baidu.com") #DELETE r=request.head("http://www.baidu.com") #HEAD r=request.options("http://www.baidu.com")#OPTIONS
咱們能夠經過request爲URL傳遞參數post
import requests payload={'username':'admin','password':'123456'} r=requests.get("http://www.baidu.com",params=payload) #r=requests.post("http://www.baidu.com",params=payload) print r.url
能夠看到頁面的URL爲:
http://www.baidu.com/?username=admin&password=123456
咱們也能夠看到頁面的響應內容、二進制的響應內容、響應的狀態碼、
print r.text #頁面的響應內容 print r.content #二進制的響應內容 print r.status_code #響應的狀態碼 print r.headers #查看響應頭 print r.cookies #查看Cookie
r.text與r.content具體區別不大
此外requests庫還能夠定製請求頭,這種狀況在爬蟲須要登錄的時候十分有用
url="http://www.baidu.com" headers={'content-type':'application/json'} r=requests.get(url,headers=headers)
②爬蟲:
漏洞掃描的底層都是基於爬蟲
爬取B站搜索Python後前50頁全部和Python有關的題目
import re import requests url="https://search.bilibili.com/all?keyword=Python&from_source=nav_search_new&page=" for i in range(1,51): turl=url+str(i); turl=requests.get(turl).text title=re.findall(r'<a title="(.*?)" href="//www.bilibili.com/video/',turl) title=set(title) for i in title: print (i)