Python網絡編程相關的庫與爬蟲基礎

PythonWeb編程

①相關的庫: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)
相關文章
相關標籤/搜索