Urllib库函数、代理、爬取案例
Urllib库函数、代理、爬取案例
urllib库-urlopen函数用法
from urllib import request
resp=request.urlopen('http://www.baidu.com')
print(resp.read())
部分结果
b'<!DOCTYPE html><!--STATUS OK-->\n\n\n <html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta content="always" name="referrer"><meta name="theme-color" content="#2932e1"><meta name="description"
urllib库-urlretrieve函数
request.urlretrieve('http://www.baidu.com/','baidu.html')
# 直接将百度网页html文件下载
request.urlretrieve('https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fwww.huaduhn.com%2Fuserfiles%2F322%2F201407%2F11%2F201407110004.jpg&refer=http%3A%2F%2Fwww.huaduhn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1627958798&t=b7a5c2084792e07337bf68ca56d4f58b','dangqi.jpg')
# 将图片下载至对应路径
urlencode函数
用浏览器发送请求的时候,如果url中包含了中文或是其他特殊字符,那么浏览器会自动给我们进行编码。而如果使用代码发送请求,那必须手动进行编码,这是就应该使用urlencode函数实现。urlencode可以把字典数据转换为URL编码的数据
from urllib import parseparams={'name':'张三',"age":18,'greet':'hello world'}result=parse.urlencode(params)print(result)
'''
结果:
name=%E5%BC%A0%E4%B8%89&age=18&greet=hello+world
'''
url='http://www.baidu.com/s'
params1={"wd":"刘德华"}
qs=parse.urlencode(params1)
print(qs)
# 结果:wd=%E5%88%98%E5%BE%B7%E5%8D%8Eurl=url+"?"+qs #https://www.baidu.com/s?wd=%E7%99%BE%E5%BA%A6 形成形如这样的形式:/s?wd=......
resp=request.urlopen(url)
print(resp.read())'''
部分结果:
[b'<!DOCTYPE html><!--STATUS OK-->\n']
[b'\n', b'\n', b' <html><head><meta http-equiv="Content-Type"
content="text/html;charset=utf-8"><meta http-equiv="X-UA-Compatible"
content="IE=edge,chrome=1"><meta
content="always" name="referrer"><meta
name="theme-color" content="#2932e1"><meta name="description"
content="\xe5\x85\xa8\xe7\x90\x83\xe9\xa2
\x86\xe5\x85\x88\xe7\x9a\x84\xe4\xb8\xad'''
parse_qs函数:
可以将编码后的url参数进行解码
params={'name':'张三',"age":18,'greet':'hello world'}
result=parse.urlencode(params)
result1=parse.parse_qs(result)
print(result)
print(result1)'''
name=%E5%BC%A0%E4%B8%89&age=18&greet=hello+world
{'name': ['张三'], 'age': ['18'], 'greet': ['hello world']}'''
urllib库urlparse和urlsplit函数用法
对一个url中的各个组成部分进行分割,则可用以上两函数
from urllib import request,parse
url='http://www.baidu.com/s?username=zhiliao'
result=parse.urlsplit(url)
result1=parse.urlparse(url)
print(result)
print(result1)
print('scheme:',result.scheme)
print('netloc:',result.netloc)
print('path:',result.path)
print('query:',result.query)'''
结果:
SplitResult(scheme='http', netloc='www.baidu.com', path='/s', query='username=zhiliao', fragment='')
ParseResult(scheme='http', netloc='www.baidu.com', path='/s', params='', query='username=zhiliao', fragment='')
scheme: http
netloc: www.baidu.com
path: /s
query: username=zhiliao'''
用Request爬取拉勾网职位信息-实战
from urllib import request
url='https://www.lagou.com/'
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.64'
}req=request.Request(url,headers=headers)resp=request.urlopen(req)
print(resp.read())'''
部分结果:
b'<!DOCTYPE html>\n<html>\n<head>\n\t<!-- meta -->\n\t<meta charset="UTF-8">\n
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />\n
<meta name="renderer" content="webkit">\n<meta property="qc:admins" content="23635710066417756375" />\n
<meta name="baidu-site-verification" content="QIQ6KC1oZ6" />\n
<meta content="\xe6\x8b\x89\xe5\x8b\xbe\xe6\x8b\x9b\xe8\x81\x98,
'''url='https://www.lagou.com/beijing-zhaopin/Python/?labelWords=label'headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.64'}
req=request.Request(url,headers=headers,method='GET')
resp=request.urlopen(req)
print(resp.read())
ProxyHander处理器(代理设置)
使用urllib.request中ProxyHander()方法来设置代理服务器,每隔一段时间换一个代理,
当IP被禁,依然可以换其他IP 继续爬取。
from urllib import request# 没有使用代理的
'''
url='http://httpbin.org/ip'
resp=request.urlopen(url)
print(resp.read())
'''
# b'{\n "origin": "111.79.225.123"\n}\n'# 使用代理
url='http://httpbin.org/ip'
#1.使用ProxyHandler传入代理构建一个handler
handler=request.ProxyHandler({"http":"112.250.107.37:53281"})
# 2.使用上述hander构建一个opener
opener=request.build_opener(handler)
# 3.使用opener发送一个请求
resp=opener.open(url)
print(resp.read())
Urllib库函数、代理、爬取案例相关推荐
- Python3网络爬虫开发实战,使用IP代理爬取微信公众号文章
前面讲解了代理池的维护和付费代理的相关使用方法,接下来我们进行一下实战演练,利用代理来爬取微信公众号的文章. 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知 ...
- 使用代理爬去微信公众号_Python3网络爬虫开发实战之使用代理爬取微信公众号文章...
本节目标 我们的主要目标是利用代理爬取微信公众号的文章,提取正文.发表日期.公众号等内容,爬取来源是搜狗微信,其链接为 http://weixin.sogou.com/,然后把爬取结果保存到 MySQ ...
- 使用代理爬去微信公众号_Python3WebSpider/9.5-使用代理爬取微信公众号文章.md at master · Lainton/Python3WebSpider · GitHub...
9.5 使用代理爬取微信公众号文章 前面讲解了代理池的维护和付费代理的相关使用方法,接下来我们进行一下实战演练,利用代理来爬取微信公众号的文章. 1. 本节目标 我们的主要目标是利用代理爬取微信公众号 ...
- 爬虫(17)多线程练习 图片爬取案例
文章目录 第十五章 多线程练习图片爬取案例 1. 多线程练习 2. 王者荣耀案例思路分析 2.1 第一种方法:直接在Previews里面找 2.2 第二种方法:通过json.cn网站解析 3. 获取数 ...
- python hook 微信_Python3使用代理爬取微信公众号文章
2019-10-20 14:15 2970浏览 扫码或搜索:进击的Coder 发送 E1371C 即可立即永久解锁本站全部文章 前面讲解了代理池的维护和付费代理的相关使用方法,接下来我们进行一下实战演 ...
- scrapy 西刺代理 爬取
原文链接: scrapy 西刺代理 爬取 上一篇: TensorFlow vgg19 图像识别 下一篇: scrapy 代理使用 爬取西刺网的代理信息,保存为json文件 http://www.xic ...
- python代理爬取存入csv文件
爬取高匿代理 1 from urllib import request 2 import re 3 import time 4 5 f = open('西1.csv','w',encoding='GB ...
- Python使用标准库urllib模拟浏览器爬取网页内容
爬取网页内容的第一步是分析目标网站源代码结构,确定自己要爬取的内容在哪里,这要求对HTML代码有一定了解,对于某些网站内容的爬取还需要具有一定的Javascript基础.但是,如果目标网站设置了反爬机 ...
- Python3+Scrapy通过代理爬取携程酒店数据
目标:通过爬取酒店信息保存至本地mysql数据库中 目标网址:https://hotels.ctrip.com/hotel/Haikou42 首先新建scrapy项目 命令行输入:crapy star ...
最新文章
- 如何测试java支持的最大内存
- fastText中常见问题汇总
- 学长毕业日记 :本科毕业论文写成博士论文的神操作20170413
- jasmine spyOn的单步调试
- 开放防火墙/26ip段_在5个不同国家/地区采用开放硬件设计的电子产品
- linux 访问samba共享文件夹权限,请教:linux下 利用samba网络共享文件夹修改权限的问题...
- python里split_python中使用split()实现嵌套列表理解
- openSUSE12.1安装及基本设置
- 阿里规定代码中禁用这个,为何?
- paip.中文 分词 ---paoding 3.1 的使用
- 《Linux程序设计》 - 《Linux高级程序设计》 - 《Unix环境高级编程》
- 数据结构基础——城市链表
- 推荐几款地图软件,你家的老房子都能看得一清二楚
- 网上商城(电商)解决方案
- 摇一摇加好友功能实现
- 第四章 Caché JSON 处理数据类型
- 免费AWS EC2实例
- Linux兄弟连视频教程—B站评论区总结
- 《易经》否、泰两卦的启示---让人饱受困扰的沟通问题
- 各大互联网公司面经分享:Java全栈知识+1500道大厂面试真题
热门文章
- php7安装执行configure报错error: off_t undefined; check your library configuration
- 启动MySQL:net start mysql出现问题+本地Mysql忘记密码的修改方法
- [JAVA EE]session 和 token 机制
- 零起点学算法10——求圆柱体的表面积
- 云服务器dns配置文件,linux服务器dns配置文件
- python 将一个整数变成2个字节的字符
- web app升级—带进度条的App自动更新
- 【剑指Offer】23、二叉搜索树的后序遍历序列
- python几种数据类型的取值方式
- 【转】[退役]纪念我的ACM——headacher@XDU