1 页面信息抓取

  定义getPage函数,根据传入的页码get到整个页面的html内容

  getContent函数,通过正则匹配把页面中的表格部分的html内容取出

  最后定义getData函数,同样是通过正则匹配把getContent函数得到的具体表格内容取出,存储在dat[]数组中

 class PC:
#初始化
def __init__(self,baseUrl):
self.baseURL = baseUrl
self.tool = Tool()
def getPage(self,pageNum):
try:
url = self.baseURL + str(pageNum)
request = urllib2.Request(url)
response = urllib2.urlopen(request)
#print response.read()
return response.read().decode('utf-8')
except urllib2.URLError,e:
if hasattr(e,"reason"):
print e.reason
return None
def getContent(self,pageNum):
page = self.getPage(pageNum)
pattern = re.compile('<tr class="table-link.*?>(.*?)</tr>',re.S)
result = re.findall(pattern,page)
if result:
#x = self.tool.replace(result[0])
#print x.strip()
return result
else:
return None
def getData(self,result):
reLen = len(result)
pattern = re.compile('<td class="">(.*?)</td>',re.S)
k = 0
for i in range(0,reLen):
d = re.findall(pattern,result[i])
dat[k]={"Filing_Name":d[0],"Filing_Date":d[1],"District_Court":d[2],"Exchange":d[3],"Ticker":d[4]}
k += 1
num = k
return dat

2 将结果存储在scv文件

 csvfile = file('aa.csv','wb')
writer = csv.writer(csvfile)
for i in range(1,214):
print i
res = pc.getContent(i)
da = pc.getData(res)
if (len(da)!=0):
for k in range(0,len(da)):
writer.writerow([(dat[k]["Filing_Name"]).strip(),(dat[k]["Filing_Date"]).strip(),(dat[k]["District_Court"]).strip(),(dat[k]['Exchange']).strip(),(dat[k]['Ticker']).strip()])

主要内容

1 获取页面内容

Python提供了强大的urllib2函数库获取网页内容,具体步骤如下

  1. 构建request请求,传入请求的url
  2. 通过urlopen(url, data, timeout)函数得到一个response对象,即返回的页面信息就存储在该对象中
  3. 通过read()方法读出页面信息

2 正则匹配

该页面抓取主要利用 re.compile(pattern[, flags])函数获得一个匹配模式,即一个正则表达式对象
flags定义包括:
re.I:忽略大小写
re.L:表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境
re.M:多行模式
re.S:' . '并且包括换行符在内的任意字符(注意:' . '不包括换行符)
re.U: 表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依赖于 Unicode 字符属性数据库

然后通过 findall函数获得所有满足匹配模式的字符串

3 存入文件

  • 定义file对象,即打开一个文件
  • 定义一个writer进行写文件操作
  • 通过writer的writerrow函数逐行写入文件
  • 关闭文件

Python学习之静态页面数据抓取的更多相关文章

  1. 吴裕雄--天生自然python学习笔记:WEB数据抓取与分析

    Web 数据抓取技术具有非常巨大的应用需求及价值, 用 Python 在网页上收集数据,不仅抓取数据的操作简单, 而且其数据分析功能也十分强大. 通过 Python 的时lib 组件中的 urlpar ...

  2. Python笔记(十一)——数据抓取例子

    上班时候想看股票行情怎么办?试试这个小例子,5分钟拉去一次股票价格,预警: #coding=utf-8 import re import urllib2 import time import thre ...

  3. python学习(26)分析ajax请求抓取今日头条cosplay小姐姐图片

    分析ajax请求格式,模拟发送http请求,从而获取网页代码,进而分析取出需要的数据和图片.这里分析ajax请求,获取cosplay美女图片. 登陆今日头条,点击搜索,输入cosplay 下面查看浏览 ...

  4. delphi 用idhttp做web页面数据抓取 注意事项

    这里不讨论webbrowse方式了 .直接采用indy的 idhttp  Get post 可以很方便的获取网页数据. 但如果要抓取大量数据 程序稳定运行不崩溃就不那么容易了.这几年也做了不少类似工具 ...

  5. Python开发笔记:网络数据抓取

    网络数据获取(爬取)分为两部分: 1.抓取(抓取网页) · urlib内建模块,特别是urlib.request · Requests第三方库(中小型网络爬虫的开发) · Scrapy框架(大型网络爬 ...

  6. Python爬虫之-动态网页数据抓取

    什么是AJAX: AJAX(Asynchronouse JavaScript And XML)异步JavaScript和XML.过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新.这意 ...

  7. python 入门实践之网页数据抓取

    这个不错.正好入门学习使用. 1.其中用到 feedparser: 技巧:使用 Universal Feed Parser 驾驭 RSS http://www.ibm.com/developerwor ...

  8. Python 之有道翻译数据抓取

    import requests import time def you_dao(): key = input("请输入要翻译的内容:") # key = "哈哈" ...

  9. python爬虫数据抓取方法汇总

    概要:利用python进行web数据抓取方法和实现. 1.python进行网页数据抓取有两种方式:一种是直接依据url链接来拼接使用get方法得到内容,一种是构建post请求改变对应参数来获得web返 ...

随机推荐

  1. DPdao

    hrbust1053 http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1053 #in ...

  2. Windows下cwRsync搭建步骤

    文章(一) CwRsync是基于cygwin平台的rsync软件包,支持windows对windows.windows对Linux.Linux对windows高效文件同步.由于CwRsync已经集成了 ...

  3. oracle登陆的命令是什么?导出数据表的命令是什么?

    登陆的命令: su - oracle sqlplus / as sysdba 导出数据表的命令: exp user/pwd@SID file=path/sth.dmp tables=(table1,t ...

  4. 使用Spring的Property文件存储测试数据 - 编写测试和调用测试数据

    准备好测试数据后,我们可以开始编写测试了,在测试用例中调用我们property文件中的测试数据. 我自己写了一个TestCase作为所有测试类基类,基类中定义了两个变量来代表之前建好的两个测试数据文件 ...

  5. 【OpenCV入门教程之三】 图像的载入,显示和输出 一站式完全解析(转)

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/20537737 作者:毛星云(浅墨)  ...

  6. C/C++笔试经典程序(二)

    1.下面5个函数哪个能够成功进行两个数的交换? swap1传的是值的副本,在函数体内被修改了形参p.q(实际参数a.b的一个拷贝),p.q的值确实交换了,但是它们是局部变量,不会影响到主函数中的a和b ...

  7. 慕课网-安卓工程师初养成-4-1 Java条件语句之 if

    来源:http://www.imooc.com/code/1353 生活中,我们经常需要先做判断,然后才决定是否要做某件事情.例如,如果考试成绩大于 90 分,则奖励一个 IPHONE 5S .对于这 ...

  8. Crystal Report 处理当前系统时间

    Changed the print date format to HH/yy/MM/mm/SS/dd  (For Example:2014/01/23 16:30:45= 161430014523) ...

  9. 学习练习 session练习

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  10. Android基础总结(9)——网络技术

    这里主要讲的是如何在手机端使用HTTP协议和服务器端进行网络交互,并对服务器返回的数据进行解析,这也是Android最常使用到的网络技术了. 1.WebView的用法 Android提供的WebVie ...