爬虫——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库相关推荐

  1. python网络爬虫学习笔记(三):urllib库的使用

    文章目录 使用urllib库 1.urllib.request.urlopen()函数 urlopen()函数API: 2.urllib.request函数 验证 Cookies 保存Cookies ...

  2. python爬取cctalk视频_python爬虫urllib使用和进阶 | Python爬虫实战二

    python爬虫urllib使用和进阶 上节课已经介绍了爬虫的基本概念和基础内容,接下来就要开始内容的爬取了. 其实爬虫就是浏览器,只不过它是一个特殊的浏览器.爬取网页就是通过HTTP协议访问相应的网 ...

  3. python爬虫爬取图片代码_Python爬虫入门:批量爬取网上图片的两种简单实现方式——基于urllib与requests...

    Python到底多强大,绝对超乎菜鸟们(当然也包括我了)的想象.近期我接触到了爬虫,被小小地震撼一下.总体的感觉就两个词--"强大"和"有趣".今天就跟大家分享 ...

  4. python爬虫(一)urllib.request库学习总结

    一.简单介绍 urllib库:是python的内置请求库,常用于网页的请求访问. 包括以下模块: urllib.request 请求模块 urllib.error 异常处理模块 urllib.pars ...

  5. python爬虫快速下载图片_Python爬虫入门:批量爬取网上图片的两种简单实现方式——基于urllib与requests...

    Python到底多强大,绝对超乎菜鸟们(当然也包括我了)的想象.近期我接触到了爬虫,被小小地震撼一下.总体的感觉就两个词--"强大"和"有趣".今天就跟大家分享 ...

  6. Python案例:使用XPath的爬虫

    案例:使用XPath的爬虫 现在我们用XPath来做一个简单的爬虫,我们尝试爬取某个贴吧里的所有帖子,并且将该这个帖子里每个楼层发布的图片下载到本地. # tieba_xpath.py#!/usr/b ...

  7. 零基础学python爬虫-零基础如何学爬虫技术?一篇带你入门!(理论+实操+荐书)...

    对于小白来说,爬虫可能是一件非常复杂.技术门槛很高的事情. 但掌握正确的方法,在短时间内做到能够爬取主流网站的数据,其实非常容易实现! 同时,你需要从一开始就有一个具体的目标!只有在目标的驱动下,你的 ...

  8. python爬虫百科-Python从概念上先了解爬虫

    什么是爬虫 爬虫:就是抓取网页数据的程序.搜索引擎的底层其实就是爬虫. 百度百科:网络爬虫 关于Python爬虫,我们需要学习的有: Python基础语法学习(基础知识) HTML页面的内容抓取(数据 ...

  9. python sub 不区分大小写_Python网络爬虫入门篇

    1. 预备知识 学习者需要预先掌握Python的数字类型.字符串类型.分支.循环.函数.列表类型.字典类型.文件和第三方库使用等概念和编程方法. Python入门篇:https://www.cnblo ...

最新文章

  1. hdu3395纯KM
  2. hdu 4006 The kth great number 线段树/优先队列/set
  3. ARM AMBA 外围设备 的datasheet
  4. python(5)- 基础数据类型
  5. ElasticSearch简单搭建
  6. jQuery基础系列
  7. c语言怎么添加按钮,关于用C语言制作按钮的问题
  8. MACD:黄白线、红绿柱与0轴关系
  9. 51单片机的键盘扫描程序,算法简单有效(来自ourdev)
  10. 【盘点】最受欢迎十大中国风歌曲
  11. 阿里巴巴、腾讯、字节跳动“顺从”互联网监管,提交应用算法详情
  12. 做数据分析的36款常用工具!!!初学者必备,纯干货!!
  13. 网站被劫持都有哪些方式
  14. 当你对成功的渴望足以与你对呼吸的渴望相媲美的时候,你就会成功!
  15. 百度地图比例尺与级别关系
  16. 2019.7.13--jzDay9
  17. WordPress站点快速集成腾讯数字身份管控平台CIAM,免开发实现登录认证
  18. 如何对固定资产、耗材全流程管理
  19. 英语--副词描述变化量大小
  20. eclipse 3.7 中英文自由切换

热门文章

  1. 喜讯|宏时数据获得CMMI3级认证!欢迎了解自研统一运维监控平台!
  2. 互联网日报 | 快手向港交所递交上市申请;苏宁双十一退货上门取件免费;小米明年扩招5000名工程师...
  3. edptrayicon怎么卸载_怎么彻底卸载北信源监控软件?(2)
  4. android大字体原理,如何让Android TextView(包括子类)的字体大...
  5. ksy是谁_sky为什么叫人皇:sky是谁及资料
  6. python调用按键精灵插件_【师兄带你学Python-1】你会涮火锅吗?
  7. HDU 2448 Mining Station on the Sea 最短路+KM
  8. 五子棋游戏Java代码简单实现(含活动图和类图设计)
  9. 教育行业分享-基础篇
  10. 3.2 项目(多肉)