爬虫学习一系列:urllib2抓取网页内容

所谓网页抓取,就是把URL地址中指定的网络资源从网络中读取出来,保存到本地。我们平时在浏览器中通过网址浏览网页,只不过我们看到的是解析过的页面效果,而通过程序获取的则是程序源代码。我们通过使用Python中urllib2来获取网页的URL资源,最简单方法就是调用urlopen 方法。

 # coding : utf-8
import urllib2
import urllib url = 'http://www.baidu.com'
res = urllib2.urlopen(url)
print res.read()

HTTP是基于请求和应答机制—客户端提出请求,服务端提供应答。

urllib2用一个Request对象来映射你提出的HTTP请求,通过调用urlopen来传入Request对象,将返回一个相关请求response对象,这个应答对象如同一个文件对象,所以我们可以在Response对象中调用read()方法来读取。

 # coding : utf-8
import urllib2
import urllib url = 'http://www.baidu.com'
request = urllib2.Request(url)
res = urllib2.urlopen(request)
print res.read()

在HTTP请求时,我们还可以发送data表单数据。一般的HTML表单,data需要编码成标准形成,然后作为data参数传到Request对象。而相应的编码工作就不能用urllib2来完成了,而是我们urllib组件。

 import urllib
import urllib2 url = 'http://www.someserver.com/register.cgi' values = {'name' : 'BaiYiShaoNian',
'localtion' : 'ChongQing',
'language' : 'Python',
} data = urllib.urlencode(values)
req = urllib2.Request(url,data)
response = urllib2.urlopen(req)
the_page = response.read() print the_page

但是我有一个疑问:就是这一份代码并不能运行,我还不知道传入数据表单的作用是什么,或者我们在抓cnblogs页面时,传入登录的信息,是不是我们就可以登录博客园了啊,所以在这里请教一下大牛,先感谢了。

通过正则表达式来获取网页部分信息

正则表达式,又称为正则表示法、常规表示法。正则表达式使用单个字符串来描述、匹配一系列符号某个句法规则的字符串。通俗的说,正则表达式就是在程序中定义了字符串的某种规则,然后我们在网页源代码中找出符合这种规则的所有代码语句,不符合的就淘汰不要。

关于正则表达式的很多具体用法,我后面会边学边为大家讲解的,这里先略过。

我们可以通过Python爬虫来获取以下网页中新闻标题和新闻的ID。

 # -*- coding: utf-8 -*-
import urllib2
import re # 1.获取访问页面的HMTL
url = "http://www.nenu.edu.cn/newslist.php?cid=1" response = urllib2.urlopen(url)
html = response.read()
# 2.根据正则表达式抓取特定内容
r = re.compile(r'<a href="intramural/content/news/(?P<ID>.{5}).*" target="_blank">(?P<Title>.+)</a>')
news = r.findall(html)
for i in range(len(news)):
ID = news[i][0]
title = news[i][1]
# data = data.decode('utf-8')
# title = title.decode('utf-8')
print title + " " + ID + " "

我们运行这一份代码看看结果是什么样的,是否已经成功获取。

爬虫学习一系列:urllib2抓取网页内容的更多相关文章

  1. python爬虫学习:分布式抓取

    前面的文章都是基于在单机操作,正常情况下,一台机器无论配置多么高,线程开得再多,也总会有一个上限,或者说成本过于巨大.因此,本文将提及分布式的爬虫,让爬虫的效率提高得更快. 构建分布式爬虫首先需要有多 ...

  2. python3下scrapy爬虫(第二卷:初步抓取网页内容之直接抓取网页)

    上一卷中介绍了安装过程,现在我们开始使用这个神奇的框架 跟很多博主一样我也先选择一个非常好爬取的网站作为最初案例,那么我先用屌丝必备网站http://www.shaimn.com/xinggan/作为 ...

  3. python3下scrapy爬虫(第四卷:初步抓取网页内容之抓取网页里的指定数据延展方法)

    上卷中我运用创建HtmlXPathSelector 对象进行抓取数据: 现在咱们再试一下其他的方法,先试一下我得最爱XPATH 看下结果: 直接打印出结果了 我现在就正常拼下路径 只求打印结果: 现在 ...

  4. python爬虫学习(1)__抓取煎蛋图片

    #coding=utf-8 #python_demo 爬取煎蛋妹子图在本地文件夹 import requests import threading import time import os from ...

  5. 通过urllib2抓取网页内容(1)

    一.urllib2发送请求 import urllib2 url = 'http://www.baidu.com' req = urllib2.Request(url) response = urll ...

  6. python爬虫学习(2)__抓取糗百段子,与存入mysql数据库

    import pymysql import requests from bs4 import BeautifulSoup#pymysql链接数据库 conn=pymysql.connect(host= ...

  7. Python爬虫学习笔记之抓取猫眼的排行榜

    代码: import json import requests from requests.exceptions import RequestException import re import ti ...

  8. python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例

    python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...

  9. Python爬虫实战六之抓取爱问知识人问题并保存至数据库

    大家好,本次为大家带来的是抓取爱问知识人的问题并将问题和答案保存到数据库的方法,涉及的内容包括: Urllib的用法及异常处理 Beautiful Soup的简单应用 MySQLdb的基础用法 正则表 ...

随机推荐

  1. HRBUST 1211 火车上的人数【数论解方程/模拟之枚举+递推】

    火车从始发站(称为第1站)开出,在始发站上车的人数为a,然后到达第2站,在第2站有人上.下车,但上.下车的人数相同,因此在第2站开出时(即在到达第3站之前)车上的人数保持为a人.从第3站起(包括第3站 ...

  2. 源码分析——迁移学习Inception V3网络重训练实现图片分类

    1. 前言 近些年来,随着以卷积神经网络(CNN)为代表的深度学习在图像识别领域的突破,越来越多的图像识别算法不断涌现.在去年,我们初步成功尝试了图像识别在测试领域的应用:将网站样式错乱问题.无线领域 ...

  3. Network | HTTP protocol

    版本 HTTP/1.0这是第一个在通讯中指定版本号的HTTP协议版本,至今仍被广泛采用,特别是在代理服务器中. HTTP/1.1当前版本.持久连接被默认采用,并能很好地配合代理服务器工作.还支持以管道 ...

  4. ZOJ 1232 Adventure of Super Mario (Floyd + DP)

    题意:有a个村庄,编号为1到a,有b个城堡,编号为a+1到a+b.现在超级玛丽在a+b处,他的家在1处.每条路是双向的,两端地点的编号以及路的长度都已给出.路的长度和通过所需时间相等.他有一双鞋子,可 ...

  5. flash+xml无法显示中文的解决办法

    flash+xml用来做图片动态浏览效果相当不错,被广泛运用于电子相册制作,很多朋友都会从网上下载一些相关的flash源码下载参考,但是经常发现在使用过程中,修改了xml文件中的英文后要么文本不显示, ...

  6. pandas常用操作

    删除某列: concatdfs.drop('Unnamed: 0',axis=1) 打印所有列名: .columns

  7. 各种优化方法总结比較(sgd/momentum/Nesterov/adagrad/adadelta)

    前言 这里讨论的优化问题指的是,给定目标函数f(x),我们须要找到一组參数x.使得f(x)的值最小. 本文下面内容如果读者已经了解机器学习基本知识,和梯度下降的原理. SGD SGD指stochast ...

  8. 【共享单车】—— React后台管理系统开发手记:主页面架构设计

    前言:以下内容基于React全家桶+AntD实战课程的学习实践过程记录.最终成果github地址:https://github.com/66Web/react-antd-manager,欢迎star. ...

  9. HTML5 Canvas 绘制六叶草

    注意: context.arc(横坐标,纵坐标,弧半径,起始角度,终止角度,逆顺时针);这个函数挺难用,主要原因是最后参数和角度的关系.不管文档怎么说,按我的实际经验,逆顺时针=false时,是逆时针 ...

  10. 启动Nginx目录浏览功能及 让用户通过用户名密码认证访问web站点

    一.启动Nginx目录浏览功能  [root@abcdocker extra]# cat w.conf server { listen 80; server_name IP地址; location / ...