Python练习,网络小爬虫(初级)
最近还在看Python版的rcnn代码,附带练习Python编程写一个小的网络爬虫程序。
抓取网页的过程其实和读者平时使用IE浏览器浏览网页的道理是一样的。比如说你在浏览器的地址栏中输入 www.baidu.com 这个地址。打开网页的过程其实就是浏览器作为一个浏览的“客户端”,向服务器端发送了 一次请求,把服务器端的文件“抓”到本地,再进行解释、展现。HTML是一种标记语言,用标签标记内容并加以解析和区分。浏览器的功能是将获取到的HTML代码进行解析,然后将原始的代码转变成我们直接看到的网站页面。
统一资源标志符(Universal Resource Identifier, URI), 统一资源定位符(Uniform Resource Locator,URI),URL是URI的一个子集。
总的来说,网络爬虫的原理很简单,就是通过你事先给定的一个URL,从这个URL开始爬,下载每一个URL的HTML代码,根据你要抓取的内容,观察HTML代码的规律性,写出相应的正则表达式,将所需的内容的HTML代码抠出来,保存在列表中,并按具体要求处理扣出来的代码,这就是网络爬虫,其实就是一个对若干有规律的网页的HTML代码进行处理的程序。(当然,这只是简单的小爬虫,对于一些大型爬虫,可以设置有很多线程分别处理每一次获取到的URL地址)。其中要实现正则表达式的部分内容,应该导入re包,要实现URL的加载,阅读功能需要导入urllib2包。
显示网页代码:
import urllib2
response = urllib2.urlopen('http://www.baidu.com/')
html = response.read()
print html
当然,在请求服务器服务的过程中,也会产生异常:URLError在没有网络连接(没有路由到特定服务器),或者服务器不存在的情况下产生。
对网页的HTML代码进行处理:
import urllib2
import re
def getimg(html):
reg = r'src="(.+?\.jpg)" pic_ext'
imgre = re.compile(reg)
imglist = re.findall(imgre,html)
return imglist
上面代码找到参数HTML页面中所有图片的URL,并且分别保存在列表中,然后返回整个列表。程序执行结果如下:
整篇文章比较低级,还望各位看官不吝赐教。除了程序中所用到了这些基本的方式,还有更强大的Python爬虫工具包Scrapy。
Python练习,网络小爬虫(初级)的更多相关文章
- Python 基于学习 网络小爬虫
<span style="font-size:18px;"># # 百度贴吧图片网络小爬虫 # import re import urllib def getHtml( ...
- 用Python写一个小爬虫吧!
学习了一段时间的web前端,感觉有点看不清前进的方向,于是就写了一个小爬虫,爬了51job上前端相关的岗位,看看招聘方对技术方面的需求,再有针对性的学习. 我在此之前接触过Python,也写过一些小脚 ...
- (数据科学学习手札31)基于Python的网络数据采集(初级篇)
一.简介 在实际的业务中,我们手头的数据往往难以满足需求,这时我们就需要利用互联网上的资源来获取更多的补充数据,但是很多情况下,有价值的数据往往是没有提供源文件的直接下载渠道的(即所谓的API),这时 ...
- 利用nodeJS实现的网络小爬虫
var http=require("http");var cheerio=require('cheerio');var url="http://www.imooc.com ...
- Python编程-一个小爬虫工具的实现过程
需求描述: 1,打开网站: 2,获取网站的文件内容: 3,返回保存到文件中: 这里的就用到了多线程的方法 import requests,threading,time def write_html(u ...
- (数据科学学习手札50)基于Python的网络数据采集-selenium篇(上)
一.简介 接着几个月之前的(数据科学学习手札31)基于Python的网络数据采集(初级篇),在那篇文章中,我们介绍了关于网络爬虫的基础知识(基本的请求库,基本的解析库,CSS,正则表达式等),在那篇文 ...
- 放养的小爬虫--京东定向爬虫(AJAX获取价格数据)
放养的小爬虫--京东定向爬虫(AJAX获取价格数据) 笔者声明:只用于学习交流,不用于其他途径.源代码已上传github.githu地址:https://github.com/Erma-Wang/Sp ...
- Python即时网络爬虫项目启动说明
作为酷爱编程的老程序员,实在按耐不下这个冲动,Python真的是太火了,不断撩拨我的心. 我是对Python存有戒备之心的,想当年我基于Drupal做的系统,使用php语言,当语言升级了,推翻了老版本 ...
- 【现学现卖】python小爬虫
1.给小表弟汇总一个院校列表,想来想去可以写一个小爬虫爬下来方便些,所以就看了看怎么用python写,到了基本能用的程度,没有什么特别的技巧,大多都是百度搜的,遇事不决问百度啦 2.基本流程就是: 用 ...
随机推荐
- style
设计的默认单位为px; 为了简化设计,都是以750px为基本单位设计的,如果屏幕大小不同,它会根据屏幕大小自动缩放. 它的样式选择和CSS非常类似,但是和CSS选择器不同的是,它只支持单级选择,不支持 ...
- ZeroMQ接口函数之 :zmq_msg_more - 指出是不是还有更多的消息部分可以接收
ZeroMQ 官方地址 :http://api.zeromq.org/4-2:zmq_msg_more zmq_msg_more(3) ØMQ Manual - ØMQ/3.2.5 Name zmq_ ...
- 五分钟理解一致性哈希算法(consistent hashing)
转载请说明出处:http://blog.csdn.net/cywosp/article/details/23397179 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法 ...
- mac java环境变量设置
Mac下添加java环境变量 方法一:全局配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #临时提权 sudo su #输入密码 vi /et ...
- Coreseek 安装指南
Coreseek 中文官网:http://www.coreseek.cn/ Sphinx0.9.9 中文手册:http://www.coreseek.cn/docs/coreseek_3.2-sphi ...
- ThinkPHP 错误: Undefined class constant 'MYSQL_ATTR_INIT_COMMAND'
在配置了ThinkPHP 的数据库配置信息后,在实例化Model(),调用相关方法时候 出现错误,改进如下方式后解决: 找到php.ini 的文件,打开扩展 php_pdo_mysql.dll ,然 ...
- 害死人不偿命的(3n+1)猜想
卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半.这样一直反复砍下去,最后一定在某一步得到n=1.卡拉兹在1950年的世界数 ...
- matlab处理图像代码
1.图像的读取MATLAB中从图像文件中读取数据用函数imread(),这个函数的作用就是将图像文件的数据读入矩阵中,此外还可以用imfinfo()函数查看图像文件的信息(见例1)%例1:图像数据及图 ...
- 看JVM就推荐这本书
话不多说,喜欢JVM的可以加Q群:397196583
- mysql删除重复记录,保存Id最小的一条
方法1:1.创建一个临时表,选取需要的数据.2.清空原表.3.临时表数据导入到原表.4.删除临时表.mysql> select * from student;+----+------+| ID ...