PythonWeb编程

①相关的库:urlib、urlib2、requests

python中自带urlib和urlib2,他们主要使用函数如下:

urllib:

urlib.urlopen()
urlib.urlretrieve()
urlretrieve(url,filename=None,reporthbook=None,data=None)

urllib2:

urllib2.urlopen()
urllib2.Requests()

urllib和urllibs2的使用方法不同的是:urllib可以用来下载文件、而urllib2用来定制请求头

urllib.urlretrieve下载文件:

import urllib,urllib2
urllib.urlretrieve('https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png',filename='/home/ubuntu/Test/a.png')

成功后会返回:

('/home/ubuntu/Test/baidu.png', <httplib.HTTPMessage instance at 0x7f14f228edc0>)

urllib.requests模块

我们可以通过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传递参数

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)
 

Python网络编程相关的库与爬虫基础的更多相关文章

  1. Python 网络编程相关知识学习

    Python 网络编程 Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的 ...

  2. python网络编程相关

    什么是网络套接字socket?简述基于tcp协议的套接字的通信流程. 为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字 (Socket)的接口,区分 ...

  3. 图解Python网络编程

    返回目录 本篇索引 (1)基本原理 (2)socket模块 (3)select模块 (4)asyncore模块 (5)asynchat模块 (6)socketserver模块 (1)基本原理 本篇指的 ...

  4. 《Python网络编程》学习笔记--使用谷歌地理编码API获取一个JSON文档

    Foundations of Python Network Programing,Third Edition <python网络编程>,本书中的代码可在Github上搜索fopnp下载 本 ...

  5. Python 网络编程(一)

    Python 网络编程 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. ...

  6. python 网络编程 IO多路复用之epoll

    python网络编程——IO多路复用之epoll 1.内核EPOLL模型讲解     此部分参考http://blog.csdn.net/mango_song/article/details/4264 ...

  7. python 网络编程 TCP/IP socket UDP

    TCP/IP简介 虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Micro ...

  8. 28、Python网络编程

    一.基于TCP协议的socket套接字编程 1.套接字工作流程 先从服务器端说起.服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客 ...

  9. 好书推荐---Python网络编程基础

    Python网络编程基础详细的介绍了网络编程的相关知识,结合python,看起来觉得很顺畅!!!

随机推荐

  1. Java使用反射的通用数组复制方法

    Java通用数组复制方法 在Arrays工具类中,提供了一个copyOf(T[] original, int newLength)方法,用于复制任意类型的对象数组,但是由于泛型不能作用于基本类型,所以 ...

  2. 链表中head->next = p;和p=head->next;之间的区别

    最近这两天在看递归,然后,看了几个例子,其中有一个单链表反转的例子可以使用递归解决,但是这里却有一个问题让我迷惑了一会,就是链表操作中这两句话的含义: 以下图中的单向链表为例: Node preNod ...

  3. Web程序设计基础期末大作业——模仿QQ飞车手游S联赛官网编写的网页

    QQ飞车手游是我非常喜欢的游戏,也是我现在为数不多的常在玩的游戏,刚好我Web程序设计基础的大作业是要做一套网站,我就借此机会模仿飞车S联赛官网的页面自己做了一个网页,又加了一些自己的元素,由于我做这 ...

  4. UESTC 1218 Pick The Sticks

    Time Limit: 15000/10000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit  Status ...

  5. hdu5317 RGCDQ

    Problem Description Mr. Hdu is interested in Greatest Common Divisor (GCD). He wants to find more an ...

  6. 主席树 【权值线段树】 && 例题K-th Number POJ - 2104

    一.主席树与权值线段树区别 主席树是由许多权值线段树构成,单独的权值线段树只能解决寻找整个区间第k大/小值问题(什么叫整个区间,比如你对区间[1,8]建立一颗对应权值线段树,那么你不能询问区间[2,5 ...

  7. C#(winform)button去掉各种边框

    仔细读完,主要在FlatAppearance属性里 1.既然是添加背景图片 所以这里应该使用 Button.BackgroudImage = "" ;来设置图片 而不应该使用  B ...

  8. pip&conda 换源

    PIP 各种可用源 清华源:https://pypi.tuna.tsinghua.edu.cn/simple 临时指定源 pip install -i https://pypi.tuna.tsingh ...

  9. 【python接口自动化】- PyMySQL数据连接

    ​ 什么是 PyMySQL? ​ PyMySQL是在Python3.x版本中用于连接MySQL服务器的一个库,Python2中则使用mysqldb.它是一个遵循 Python数据库APIv2.0规范, ...

  10. Redis之哨兵机制(sentinel)——配置详解及原理介绍

    说到Redis不得不提哨兵模式,那么究竟哨兵是什么意思?为什么要使用哨兵呢? 接下来一一为您讲解: 1.为什么要用到哨兵 哨兵(Sentinel)主要是为了解决在主从(master-slave)复制架 ...