python urllib应用
urlopen 爬取网页
爬取网页
read() 读取内容
read() , readline() ,readlines() , fileno() , close() :这些方法的使用方式与文件对象完全一样
ret = request.urlopen("http://www.baidu.com")
print(ret.read()) #read() 读取网页
urlretrieve 写入文件
直接 将你要爬取得 网页 写到本地
import urllib.request
ret = urllib.request.urlretrieve("url地址","保存的路径地址")
urlcleanup 清除缓存
清除 request.urlretrieve 产生的缓存
print(request.urlcleanup())
info 显示请求信息
info 返回一个httplib.HTTPMessage对象,表示远程服务器返回的头信息
ret = request.urlopen("http://www.baidu.com")
print(ret.info())

etcode 获取状态码
ret = request.urlopen("http://www.baidu.com")
print(ret.getcode()) # 返回200 就是 正常

geturl 获取当前正在爬取的网址
ret = request.urlopen("http://www.baidu.com")
print(ret.geturl)

超时设置
timeout 是以秒来计算的
ret = request.urlopen("http://www.baidu.com",timeout="设置你的超时时间")
print(ret.read())
模拟get 请求
from urllib import request
name = "python" # 你要搜索的 内容
url = "http://www.baidu.com/s?wd=%s"%name
ret_url = request.Request(url) # 发送请求
ret = request.urlopen(url)
print(ret.read().decode("utf-8"))
print(ret.geturl())
解决中文问题 request.quote
from urllib import request
name = "春生" # 你要搜索的 内容
url = "http://www.baidu.com/s?wd=%s"%name
ret_url = request.Request(url) # 发送请求
ret = request.urlopen(url)
print(ret.read().decode("utf-8"))
print(ret.geturl())

解决 request.quote
name = "春生" # 你要搜索的 内容
name = request.quote(name) # 解决中文问题
url = "http://www.baidu.com/s?wd=%s"%name
ret_url = request.Request(url) # 发送请求
ret = request.urlopen(url)
print(ret.read().decode("utf-8"))
模拟post 请求
from urllib import request, parse
url = "https://www.iqianyue.com/mypost"
mydata = parse.urlencode({
"name":"哈哈",
"pass":"123"
}).encode("utf-8")
ret_url = request.Request(url, mydata) # 发送请求
ret = request.urlopen(ret_url) # 爬取网页
print(ret.geturl()) # 打印当前爬取的url
print(ret.read().decode("utf-8"))
模拟浏览器 发送请求头
request.Request(url, headers=headers) 加上请求头 模拟浏览器
from urllib import request, parse
url = "http://www.xiaohuar.com/"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"
}
ret_url = request.Request(url, headers=headers) # 发送请求
ret = request.urlopen(ret_url)
print(ret.geturl())
print(ret.read().decode("gbk"))
编码出现错误 报错 解决方式
出线的问题
from urllib import request, parse
url = "http://www.xiaohuar.com/"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"
}
ret_url = request.Request(url, headers=headers) # 发送请求
ret = request.urlopen(ret_url)
print(ret.geturl())
print(ret.read().decode("utf-8"))

解决问题
decode("utf-8","ignore")
加上 "ignore" 就可以忽略掉
from urllib import request, parse
url = "http://www.xiaohuar.com/"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"
}
ret_url = request.Request(url, headers=headers) # 发送请求
ret = request.urlopen(ret_url)
print(ret.geturl())
print(ret.read().decode("utf-8","ignore"))

python urllib应用的更多相关文章
- python urllib模块的urlopen()的使用方法及实例
Python urllib 库提供了一个从指定的 URL 地址获取网页数据,然后对其进行分析处理,获取想要的数据. 一.urllib模块urlopen()函数: urlopen(url, data=N ...
- Python:urllib和urllib2的区别(转)
原文链接:http://www.cnblogs.com/yuxc/ 作为一个Python菜鸟,之前一直懵懂于urllib和urllib2,以为2是1的升级版.今天看到老外写的一篇<Python: ...
- Python urllib和urllib2模块学习(一)
(参考资料:现代魔法学院 http://www.nowamagic.net/academy/detail/1302803) Python标准库中有许多实用的工具类,但是在具体使用时,标准库文档上对使用 ...
- python urllib和urllib2 区别
python有一个基础的库叫httplib.httplib实现了HTTP和HTTPS的客户端协议,一般不直接使用,在python更高层的封装模块中(urllib,urllib2)使用了它的http实现 ...
- Python urllib urlretrieve函数解析
Python urllib urlretrieve函数解析 利用urllib.request.urlretrieve函数下载文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 Ur ...
- python+urllib+beautifulSoup实现一个简单的爬虫
urllib是python3.x中提供的一系列操作的URL的库,它可以轻松的模拟用户使用浏览器访问网页. Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能 ...
- HTTP Header Injection in Python urllib
catalogue . Overview . The urllib Bug . Attack Scenarios . 其他场景 . 防护/缓解手段 1. Overview Python's built ...
- python urllib urllib2
区别 1) urllib2可以接受一个Request类的实例来设置URL请求的headers,urllib仅可以接受URL.这意味着,用urllib时不可以伪装User Agent字符串等. 2) u ...
- python urllib基础学习
# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #使用python创建一个简单的WEB客户端 import urll ...
- python urllib模块
1.urllib.urlopen(url[,data[,proxies]]) urllib.urlopen(url[, data[, proxies]]) :创建一个表示远程url的类文件对象,然后像 ...
随机推荐
- C/C++代码静态分析工具调研
C/C++代码静态分析工具调研 摘自:https://www.jianshu.com/p/92886d979401 简述 静态分析(static analysis)是指在不执行代码的情况下对其进行分析 ...
- Qt编写自定义控件66-光晕时钟
一.前言 在上一篇文章写了个高仿WIN10系统的光晕日历,这次来绘制一个光晕的时钟,也是在某些网页上看到的效果,时分秒分别以进度条的形式来绘制,而且这个进度条带有光晕效果,中间的日期时间文字也是光晕效 ...
- Python初级 3 基本数学运算
一. 四大基本运算操作符 1 加+ print(3 + 2) 2 减- print(3 - 2) 3 乘:* print(3 * 2) 4 除/, // print(3 / 2) print(3 // ...
- go micro 微服务框架温习
go mod edit -require="github.com/chromedp/chromedp@v0.1.0" @后面加上你需要的版本号.就可以 已经修改go.mod 里的依 ...
- k8s中实现永久无法删除一个pod---也就是在deployment.yaml中定义副本数量
参照:https://www.cnblogs.com/effortsing/p/10486960.html 这里面的deployment.yaml对应的pod就是永久无法删除的
- win10安装MySQL 8
下载并解压MySQL Server(官方有MySQL Installer 8.0.13,但是我安装没有成功) 将MySQL Server的bin目录加入到系统变量Path中. 找一个my.ini文件放 ...
- JS获当前网页元素高度offsetHeight
本文测试的是offsetHeight,获取网页中某元素的高度,单位是像素,获取的类型是整型,可以进行数字运算.如图,网页中的元素本身的高度包括,自身的内容+padding+border,而margin ...
- 安装Vim插件——ViPlugin
打开Eclipse,找到Help——Install New Software Name输入 viPlugin ,Location输入 viplugin.com ,点击OK 之后同意协议,然后等待下载 ...
- django自带的用户验证是验证username和password,如何自定义验证功能,让mobil也能作为账户名登录?
users.views.pyfrom django.contrib.auth.backends import ModelBackendfrom django.db.models import Qcla ...
- JIRA中的并联审批流程定制
JIRA号称可以跟踪任何事务,让JIRA的流程来匹配团队的工作流程,而不是让你的团队适应JIRA的工作流程.但是在实践中,有些有些流程用JIRA还是比较困难的,比如并联审批流程,一个并联审批流程需求大 ...