Python网络编程相关的库与爬虫基础
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网络编程相关的库与爬虫基础的更多相关文章
- Python 网络编程相关知识学习
Python 网络编程 Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的 ...
- python网络编程相关
什么是网络套接字socket?简述基于tcp协议的套接字的通信流程. 为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字 (Socket)的接口,区分 ...
- 图解Python网络编程
返回目录 本篇索引 (1)基本原理 (2)socket模块 (3)select模块 (4)asyncore模块 (5)asynchat模块 (6)socketserver模块 (1)基本原理 本篇指的 ...
- 《Python网络编程》学习笔记--使用谷歌地理编码API获取一个JSON文档
Foundations of Python Network Programing,Third Edition <python网络编程>,本书中的代码可在Github上搜索fopnp下载 本 ...
- Python 网络编程(一)
Python 网络编程 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. ...
- python 网络编程 IO多路复用之epoll
python网络编程——IO多路复用之epoll 1.内核EPOLL模型讲解 此部分参考http://blog.csdn.net/mango_song/article/details/4264 ...
- python 网络编程 TCP/IP socket UDP
TCP/IP简介 虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Micro ...
- 28、Python网络编程
一.基于TCP协议的socket套接字编程 1.套接字工作流程 先从服务器端说起.服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客 ...
- 好书推荐---Python网络编程基础
Python网络编程基础详细的介绍了网络编程的相关知识,结合python,看起来觉得很顺畅!!!
随机推荐
- cassandra权威指南读书笔记--客户端
DataStax驱动最成熟.默认,驱动程序会使用第一个连接的节点作为支持的版本协议.如果集群存在高低版本的节点(比如升级场景),如果驱动先连接不同不同版本的节点,可能会出现不兼容.驱动支持压缩客户端和 ...
- Codeforces Round #668 (Div. 2)【ABCD】
比赛链接:https://codeforces.com/contest/1405 A. Permutation Forgery 题意 给出一个大小为 $n$ 的排列 $p$,定义 \begin{equ ...
- 阅读笔记:ImageNet Classification with Deep Convolutional Neural Networks
概要: 本文中的Alexnet神经网络在LSVRC-2010图像分类比赛中得到了第一名和第五名,将120万高分辨率的图像分到1000不同的类别中,分类结果比以往的神经网络的分类都要好.为了训练更快,使 ...
- Codeforces Round #652 (Div. 2) C. RationalLee(贪心)
题目链接:https://codeforces.com/contest/1369/problem/C 题意 将 $n$ 个数分给 $k$ 个人,每个人分 $w_i$ 个数($\sum_{i = 1}^ ...
- Codeforces Round #552 (Div. 3) E. Two Teams (模拟,优先队列,双向链表)
题意:有\(n\)个队员站成一排,有两个教练分别选人,每次选当前剩余人中的能力值最大的那个以及他两边相邻的\(k\)个人,问最后每个人所在队伍情况. 题解:优先队列模拟,以及双向链表,先用结构体存入每 ...
- 放苹果 POJ - 1664 递推
把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法. Input 第一行是测试数据的数目t(0 <= t < ...
- LEETCODE - 1228【等差数列中缺失的数字】
C++: class Solution { public: int missingNumber(vector<int>& arr) { int subnum ...
- nextLine()和next()的区别和使用方法
最近在笔试,刷剑指Offer时,都是只需要把方法实现了就行.但是!!!笔试时候会发现,大部分会要求你把main函数也code出来,真是醉了,第一次笔试时候搞的晕乎乎的..... 废话不多说,那么在写输 ...
- HDU - 4722 Good Numbers 【找规律 or 数位dp模板】
If we sum up every digit of a number and the result can be exactly divided by 10, we say this number ...
- 牛客多校第九场 && ZOJ3774 The power of Fibonacci(二次剩余定理+斐波那契数列通项/循环节)题解
题意1.1: 求\(\sum_{i=1}^n Fib^m\mod 1e9+9\),\(n\in[1, 1e9], m\in[1, 1e4]\) 思路1.1 我们首先需要知道斐波那契数列的通项是:\(F ...