爬虫之urllib模块
1. urllib模块介绍
- python自带的一个基于爬虫的模块。
- 作用:可以使用代码模拟浏览器发起请求。
- 经常使用到的子模块:request,parse。
- 使用流程:
- 指定URL。
- 针对指定的URL发起了一个请求。
- 获取页面数据。
- 持久化储存。
2. 爬取搜狗首页的页面数据
# 需求:爬取搜狗首页的页面数据
import urllib.request # 1. 指定url
url = 'https://www.sogou.com/' # 2. 发起请求:urlopen可以根据指定的url发起请求,且返回一个响应对象(byte类型)
response = urllib.request.urlopen(url) # 3. 获取页面数据:read函数返回的就是响应对象中存储的页面数据
page_text = response.read() # 4. 持久化存储
with open('./sougou.html','wb') as fp:
fp.write(page_text)
print('写入数据成功')
3. 爬取指定词条所对应的页面数据
import urllib.request
import urllib.parse # 1. 指定url
url = 'https://www.sogou.com/web?query=' # url特性:url不可以存在非ASCII编码的字符数据
word = urllib.parse.quote('人民币')
url += word # 有效的url # 2. 发起请求
response = urllib.request.urlopen(url=url) # 3. 获取页面数据
page_text = response.read()
with open('rmb.html','wb') as fp:
fp.write(page_text)
4.反爬和反反爬
- 反爬机制:网站检查请求的UA,如果发现UA是爬虫程序,则拒绝提供网站数据。
- User-Agent(UA):请求载体的身份标识,正常是浏览器。
- 反反爬机制:伪装爬虫程序请求的UA,例如伪装成谷歌浏览器或火狐浏览器的身份标识。
mport urllib.request url = 'https://www.baidu.com/' # UA伪装
# 1. 自制定一个请求对象
headers = {
# 存储任意的请求头信息
'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
}
# 该请求对象的UA进行了成功的伪装
request = urllib.request.Request(url=url,headers=headers) # 2. 针对自制定的请求对象发起请求
reponse = urllib.request.urlopen(request) print(reponse.read())
5. post请求
import json
import urllib.request
import urllib.parse # 一、 指定URL
url = 'https://fanyi.baidu.com/sug' # 对post请求携带的参数进行处理。流程:
# 1. 将请求参数封装到字典中
data = {
'kw':'西瓜'
} # 2. 使用parse中的urlencode进行编码处理
data = urllib.parse.urlencode(data) # 3. 将步骤2的编码结果转换成byte类型
data = data.encode() # 二、发起post请求:urlopen函数的data参数表示的就是经过处理之后的post请求携带的参数
response = urllib.request.urlopen(url=url,data=data) page_text = response.read() with open('translate.json','ab') as fp:
fp.write(page_text)
爬虫之urllib模块的更多相关文章
- Python爬虫之urllib模块2
Python爬虫之urllib模块2 本文来自网友投稿 作者:PG-55,一个待毕业待就业的二流大学生. 看了一下上一节的反馈,有些同学认为这个没什么意义,也有的同学觉得太简单,关于Beautiful ...
- Python爬虫之urllib模块1
Python爬虫之urllib模块1 本文来自网友投稿.作者PG,一个待毕业待就业二流大学生.玄魂工作室未对该文章内容做任何改变. 因为本人一直对推理悬疑比较感兴趣,所以这次爬取的网站也是平时看一些悬 ...
- 练手爬虫用urllib模块获取
练手爬虫用urllib模块获取 有个人看一段python2的代码有很多错误 import re import urllib def getHtml(url): page = urllib.urlope ...
- 洗礼灵魂,修炼python(53)--爬虫篇—urllib模块
urllib 1.简介: urllib 模块是python的最基础的爬虫模块,其核心功能就是模仿web浏览器等客户端,去请求相应的资源,并返回一个类文件对象.urllib 支持各种 web 协议,例如 ...
- Python爬虫urllib模块
Python爬虫练习(urllib模块) 关注公众号"轻松学编程"了解更多. 1.获取百度首页数据 流程:a.设置请求地址 b.设置请求时间 c.获取响应(对响应进行解码) ''' ...
- python爬虫-urllib模块
urllib 模块是一个高级的 web 交流库,其核心功能就是模仿web浏览器等客户端,去请求相应的资源,并返回一个类文件对象.urllib 支持各种 web 协议,例如:HTTP.FTP.Gophe ...
- 爬虫--urllib模块
一.urllib库 概念:urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在Python3中的为urllib.request和urll ...
- 爬虫(三):urllib模块
1. urllib模块 1.1 urllib简介 urllib 是 Python3 中自带的 HTTP 请求库,无需复杂的安装过程即可正常使用,十分适合爬虫入门 urllib 中包含四个模块,分别是: ...
- python爬虫 urllib模块url编码处理
案例:爬取使用搜狗根据指定词条搜索到的页面数据(例如爬取词条为‘周杰伦'的页面数据) import urllib.request # 1.指定url url = 'https://www.sogou. ...
随机推荐
- spring aop xml中配置实例
http://blog.csdn.net/wangpeng047/article/details/8560694
- 常用CSS样式设置
文字 我们以div标签举例,来设置常见的文字样式 <div>今天天气真晴朗!</div> div { /* 文字大小为14像素 */ font-size: 14px; /* 文 ...
- Js仿腾讯微博效果
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- em和rem的区别
rem和em单位一样,都是一个相对单位,不同的是em是相对于元素的父元素的font-size进行计算,rem是相对于根元素html的font-size进行计算,这样一来rem就绕开了复杂的层级关系,实 ...
- Android 接入支付宝支付实现
接上篇android接入微信支付文章,这篇我们带你来接入支付宝支付服务 简介 首先要说明的是个人感觉接入支付宝比微信简单多了,很轻松的,所以同学们不要紧张~ 当然还是老规矩啦,上来肯定的贴上官网地址, ...
- 菜鸟 学注册机编写之 Android app
0x00前言 环境及工具: 手机 Nexus 4(己root) 系统版本 Android 5.01 工具 AndroidKiller_V1.2 关于Android平台app注册机的编 ...
- struts2 中使用DMI(动态调用方法)方式配置action
1.使用 "!"方式,即 action名称 ! 方法名称 struts.xml 配置 <package name="user" namespace=&qu ...
- sql注入【手工及一些工具】
Sql注入原理分析: 网站程序存在可控传递参数,参数未进行过滤直接带入数据库查询,导致攻击者可通过传递恶意sql语句代码进行执行攻击. Sql注入产生条件 1.必须有参数传递 2.参数值带入数据库查询 ...
- 利用XShell和WinSCP连接本机和Linux虚拟机——Kali部署
1.XShell支持在本机直接连接Linux终端,加快速度,支持命令的复制粘贴 2.WinSCP 支持本机与Linux的文件复制粘贴 关键:使用SSH协议,所以要在Linux开启ssh服务,下面以Ka ...
- [转载]弹出一个不带地址栏、工具栏的IE非模态窗口
标签:ie /非模态窗口 window.open(url,'_blank','menubar=no,fullscreen=1,toolbar=no,resizable=no,location=no,s ...