python爬虫用urllib还是reques_Python爬虫之urllib.request库
爬虫——urllib.request库的基本使用
所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地。在Python中有很多库可以用来抓取网页,我们先学习urllib.request。(在python2.x中为urllib2)
urlopen
我们先阅读以下代码:#!/usr/bin/python3
# -*- coding:utf-8 -*-
# 导入urllib.request库
import urllib.request
# 向指定的url发送请求,并返回服务器响应的类文件对象
response = urllib.request.urlopen("http://www.baidu.com/")
# 类文件对象支持 文件对象的操作方法,如read()方法读取文件全部内容,返回字符串
html = response.read()
# 打印字符串
print(html)
实际上,如果我们在浏览器上打开百度主页,右键选择“查看源代码”,你会发现,跟我们执行上面的程序输出的结果是一模一样的。也就是说,上面的几行代码就已经帮我们把百度的主页的全部代码爬了下来。
Reuqest
在上面的例子里,urlopen()的参数就是一个url地址。
但是如果需要执行更复杂的操作,比如增加HTTP报头,则必须创建一个Request实例来作为urlopen()的参数,而需要访问的url地址则作为Request实例的参数。#!/usr/bin/python3
# -*- coding:utf-8 -*-
# 导入urllib.request库
import urllib.request
# url 作为Request()方法的参数,构造并返回一个Request对象
request = urllib.request.Request("http://www.baidu.com/")
# 向服务器发送这个请求
response = urllib.request.urlopen(request)
html = response.read()
print(html)
运行结果是完全一样的:
新建的Request实例,除了必须要有url参数之外,还可以设置另外两个参数:
1.data(默认为空):是伴随url提交的数据(比如post的数据),同时HTTP请求将从“GET”方式改为“POST”方式。
2.headers(默认为空):是一个字典,包含了需要发送的HTTP报头的键值对。
User-Agent
如果我们希望我们的爬虫程序更像一个真实用户,那们我们第一步,就是需要伪装成一个被公认的浏览器。用不同的浏览器在发送请求的时候,会有不同的User-Agent头。urllib.request默认的User-Agent头为:Python-urllib/x.y(x和y是Python主版本和次版本号,例如Python-urllib/3.5)#!/usr/bin/python3
# -*- coding:utf-8 -*-
# 导入urllib.request库
import urllib.request
# chrome 的 User-Agent,包含在 header里
header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36'}
# url 连同 headers,一起构造Request请求,这个请求将附带 chrome 浏览器的User-Agent
request = urllib.request.Request("http://www.baidu.com/", headers = header)
# 向服务器发送这个请求
response = urllib.request.urlopen(request)
html = response.read()
print(html)
添加更多的Header信息
在HTTP Request中加入特定的Header,来构造一个完整的HTTP请求消息。可以通过调用Request.add_header() 添加/修改一个特定的header
也可以通过调用Request.get_header()来查看已有的header。
添加一个特定的header#!/usr/bin/python3
# -*- coding:utf-8 -*-
# 导入urllib.request库
import urllib.request
# chrome 的 User-Agent,包含在 header里
header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36'}
# url 连同 headers,一起构造Request请求,这个请求将附带 chrome 浏览器的User-Agent
request = urllib.request.Request("http://www.baidu.com/", headers = header)
# 也可以通过调用Request.add_header() 添加/修改一个特定的header
request.add_header("Connection", "keep-alive")
# 向服务器发送这个请求
response = urllib.request.urlopen(request)
html = response.read()
print(html)
python爬虫用urllib还是reques_Python爬虫之urllib.request库相关推荐
- python网络爬虫学习笔记(三):urllib库的使用
文章目录 使用urllib库 1.urllib.request.urlopen()函数 urlopen()函数API: 2.urllib.request函数 验证 Cookies 保存Cookies ...
- python爬取cctalk视频_python爬虫urllib使用和进阶 | Python爬虫实战二
python爬虫urllib使用和进阶 上节课已经介绍了爬虫的基本概念和基础内容,接下来就要开始内容的爬取了. 其实爬虫就是浏览器,只不过它是一个特殊的浏览器.爬取网页就是通过HTTP协议访问相应的网 ...
- python爬虫爬取图片代码_Python爬虫入门:批量爬取网上图片的两种简单实现方式——基于urllib与requests...
Python到底多强大,绝对超乎菜鸟们(当然也包括我了)的想象.近期我接触到了爬虫,被小小地震撼一下.总体的感觉就两个词--"强大"和"有趣".今天就跟大家分享 ...
- python爬虫(一)urllib.request库学习总结
一.简单介绍 urllib库:是python的内置请求库,常用于网页的请求访问. 包括以下模块: urllib.request 请求模块 urllib.error 异常处理模块 urllib.pars ...
- python爬虫快速下载图片_Python爬虫入门:批量爬取网上图片的两种简单实现方式——基于urllib与requests...
Python到底多强大,绝对超乎菜鸟们(当然也包括我了)的想象.近期我接触到了爬虫,被小小地震撼一下.总体的感觉就两个词--"强大"和"有趣".今天就跟大家分享 ...
- Python案例:使用XPath的爬虫
案例:使用XPath的爬虫 现在我们用XPath来做一个简单的爬虫,我们尝试爬取某个贴吧里的所有帖子,并且将该这个帖子里每个楼层发布的图片下载到本地. # tieba_xpath.py#!/usr/b ...
- 零基础学python爬虫-零基础如何学爬虫技术?一篇带你入门!(理论+实操+荐书)...
对于小白来说,爬虫可能是一件非常复杂.技术门槛很高的事情. 但掌握正确的方法,在短时间内做到能够爬取主流网站的数据,其实非常容易实现! 同时,你需要从一开始就有一个具体的目标!只有在目标的驱动下,你的 ...
- python爬虫百科-Python从概念上先了解爬虫
什么是爬虫 爬虫:就是抓取网页数据的程序.搜索引擎的底层其实就是爬虫. 百度百科:网络爬虫 关于Python爬虫,我们需要学习的有: Python基础语法学习(基础知识) HTML页面的内容抓取(数据 ...
- python sub 不区分大小写_Python网络爬虫入门篇
1. 预备知识 学习者需要预先掌握Python的数字类型.字符串类型.分支.循环.函数.列表类型.字典类型.文件和第三方库使用等概念和编程方法. Python入门篇:https://www.cnblo ...
最新文章
- hdu3395纯KM
- hdu 4006 The kth great number 线段树/优先队列/set
- ARM AMBA 外围设备 的datasheet
- python(5)- 基础数据类型
- ElasticSearch简单搭建
- jQuery基础系列
- c语言怎么添加按钮,关于用C语言制作按钮的问题
- MACD:黄白线、红绿柱与0轴关系
- 51单片机的键盘扫描程序,算法简单有效(来自ourdev)
- 【盘点】最受欢迎十大中国风歌曲
- 阿里巴巴、腾讯、字节跳动“顺从”互联网监管,提交应用算法详情
- 做数据分析的36款常用工具!!!初学者必备,纯干货!!
- 网站被劫持都有哪些方式
- 当你对成功的渴望足以与你对呼吸的渴望相媲美的时候,你就会成功!
- 百度地图比例尺与级别关系
- 2019.7.13--jzDay9
- WordPress站点快速集成腾讯数字身份管控平台CIAM,免开发实现登录认证
- 如何对固定资产、耗材全流程管理
- 英语--副词描述变化量大小
- eclipse 3.7 中英文自由切换
热门文章
- 喜讯|宏时数据获得CMMI3级认证!欢迎了解自研统一运维监控平台!
- 互联网日报 | 快手向港交所递交上市申请;苏宁双十一退货上门取件免费;小米明年扩招5000名工程师...
- edptrayicon怎么卸载_怎么彻底卸载北信源监控软件?(2)
- android大字体原理,如何让Android TextView(包括子类)的字体大...
- ksy是谁_sky为什么叫人皇:sky是谁及资料
- python调用按键精灵插件_【师兄带你学Python-1】你会涮火锅吗?
- HDU 2448 Mining Station on the Sea 最短路+KM
- 五子棋游戏Java代码简单实现(含活动图和类图设计)
- 教育行业分享-基础篇
- 3.2 项目(多肉)