所谓网页抓取,

就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地。

类似于使用程序模拟IE浏览器的功能,把URL作为HTTP请求的内容发送到服务器端, 然后读取服务器端的响应资源。

在Python中,我们使用urllib2这个组件来抓取网页。

urllib2是Python的一个获取URLs(Uniform Resource Locators)的组件。

它以urlopen函数的形式提供了一个非常简单的接口。

最简单的urllib2的应用代码只需要四行。

我们新建一个文件urllib2_test01.py来感受一下urllib2的作用:

按下F5可以看到运行的结果:

我们可以打开百度主页,(自学python,企鹅,有兴趣的伙伴搜索:)右击,选择查看源代码(火狐OR谷歌浏览器均可),会发现也是完全一样的内容。

也就是说,上面这四行代码将我们访问百度时浏览器收到的代码们全部打印了出来。

这就是一个最简单的urllib2的例子。

除了"http:",URL同样可以使用"ftp:","file:"等等来替代。

HTTP是基于请求和应答机制的:

客户端提出请求,服务端提供应答。

urllib2用一个Request对象来映射你提出的HTTP请求。

在它最简单的使用形式中你将用你要请求的地址创建一个Request对象,

通过调用urlopen并传入Request对象,将返回一个相关请求response对象,

这个应答对象如同一个文件对象,所以你可以在Response中调用.read()。

我们新建一个文件urllib2_test02.py来感受一下:

可以看到输出的内容和test01是一样的。

urllib2使用相同的接口处理所有的URL头。例如你可以像下面那样创建一个ftp请求。

在HTTP请求时,允许你做额外的两件事。

1.发送data表单数据

这个内容相信做过Web端的都不会陌生,

有时候你希望发送一些数据到URL(通常URL与CGI[通用网关接口]脚本,或其他WEB应用程序挂接)。

在HTTP中,这个经常使用熟知的POST请求发送。

这个通常在你提交一个HTML表单时由你的浏览器来做。

并不是所有的POSTs都来源于表单,你能够使用POST提交任意的数据到你自己的程序。

一般的HTML表单,data需要编码成标准形式。然后做为data参数传到Request对象。

编码工作使用urllib的函数而非urllib2。

我们新建一个文件urllib2_test03.py来感受一下:

如果没有传送data参数,urllib2使用GET方式的请求。

GET和POST请求的不同之处是POST请求通常有"副作用",

它们会由于某种途径改变系统状态(例如提交成堆垃圾到你的门口)。

Data同样可以通过在Get请求的URL本身上面编码来传送。

这样就实现了Data数据的Get传送。

2.设置Headers到http请求

有一些站点不喜欢被程序(非人为访问)访问,或者发送不同版本的内容到不同的浏览器。

默认的urllib2把自己作为“Python-urllib/x.y”(x和y是Python主版本和次版本号,例如Python-urllib/2.7),

这个身份可能会让站点迷惑,或者干脆不工作。

浏览器确认自己身份是通过User-Agent头,当你创建了一个请求对象,你可以给他一个包含头数据的字典。

下面的例子发送跟上面一样的内容,但把自身模拟成Internet Explorer。

python爬取网页上的特定链接_自学python爬虫二:如何正常操作urllib2通过指定的URL抓取网页内容...相关推荐

  1. python爬取网页上的特定链接_python3下scrapy爬虫(第三卷:初步抓取网页内容之抓取网页里的指定数据)...

    上一卷中我们抓取了网页的所有内容,现在我们抓取下网页的图片名称以及连接 现在我再新建个爬虫文件,名称设置为crawler2 做爬虫的朋友应该知道,网页里的数据都是用文本或者块级标签包裹着的,scrap ...

  2. python爬取网页上的特定链接_python 用bs4解析网页后,如何循环打开爬取出来的网址链接?...

    请问,用beautiful soup爬取特定网页后提取tag 'a',抓取里面的网址,打开特定的网址,循环特定次数,最后打印出想要的网址,如何操作? 详细的要求如下图: 我的代码如下: import ...

  3. [Python]网络爬虫(二):利用urllib2通过指定的URL抓取网页内容

    版本号:Python2.7.5,Python3改动较大,各位另寻教程. 所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地.  类似于使用程序模拟IE浏览器的功能,把URL作 ...

  4. python能在pdf上加内容吗_在Python中向现有PDF文档添加文本

    在四处寻找之后,我终于找到了解决办法: 结果发现this毕竟是正确的方法. 但是,我觉得这不够冗长. 这张海报似乎是从here(相同的变量名等)中摘取的. 想法:用Reportlab创建新的空白PDF ...

  5. python java 爬数据_如何用java爬虫爬取网页上的数据

    当我们使用浏览器处理网页的时候,有时候是不需要浏览的,例如使用PhantomJS适用于无头浏览器,进行爬取网页数据操作.最近在进行java爬虫学习的小伙伴们有没有想过如何爬取js生成的网络页面吗?别急 ...

  6. python爬网页上所有的链接(爬到最深)

    相关课程链接:Crawl Web 今天做的这个是在上个实验的基础上加了一个跳转挖掘链接,再从新链接里面继续向下挖掘,这样层层递进挖到深处~~ 还没有学到get_page的真正写法,如果用urllib2 ...

  7. python抓取网站图片_python抓取图片示例 python抓取网页上图片

    python抓取网页上图片 这个错误时是什么意思 下面是代码 import re import urllib.request imp正则表达式匹配的url有错误 for x in add: print ...

  8. 博客社会学图——使用python检索网页上的友情链接

    <博客社会学图--使用python检索网页上的友情链接>,作者:leniy,原文链接:http://www.cnblogs.com/leniy/archive/2012/11/27/pyt ...

  9. Python如何下载网页上的视频

    Python如何下载网页上的视频 1.在电脑上创建一个文件夹 2.在文件夹里输入cmd 3.回车 4.输入 pip install you-get 回车 5.输入you-get 自己喜欢的视频链接 回 ...

最新文章

  1. 影像组学视频学习笔记(41)-如何使用软件提取组学特征、Li‘s have a solution and plan.
  2. Python中defaultdict函数的使用方法
  3. 什么是 MultiRaft ?
  4. wxpython下载很慢_为什么WxPythons运动检测速度如此之慢?
  5. CentOS 国内yum源
  6. 让老IE支持CSS3响应式布局
  7. bitcoin jsonrpc java_BitcoinCore JSONRPC Java使用创建账号,获取余额,转账等等...
  8. 深大计算机系有金工实习吗,金工实习报告答案深圳大学拿A答案(精选).pdf
  9. POCO c++ 使用例子
  10. iOS最好用的弹出框
  11. 10.Hello World 的 Java 项目创建和项目配置文件讲解
  12. HDU 5050 Divided Land(进制转换)
  13. Redis 集群模式(Cluster)原理详解
  14. 用js判断图片地址是否有效
  15. matlab第三章笔记
  16. 线性高电压稳压器的制作
  17. Teams app 开发最佳实践
  18. 利用移动硬盘+路由器搭建局域网云存储
  19. 《python编程从入门到实践》读书笔记1
  20. 2014去哪儿网几道题

热门文章

  1. autopoi升级到4.0版本修改方法
  2. JAVA微服务框架,Jeecg-P3 1.0.0 重构版本发布
  3. 微信小程序,引爆新热点!JEECG社区小程序实战培训,业内首发,实战干货!
  4. 互联网 | 逻辑上的黑话才是真正的花里胡哨
  5. 大数据之旅--Hadoop的发展史
  6. stimulsoft入门教程:分层报表(下)
  7. 码云 GVP 项目 SequoiaDB 完成 C 轮数千万美元融资
  8. Mysql执行计划查看
  9. C#系列之{流和序列化}
  10. 今天完成了share memory的测试