因为要学习python,所以看到一些网站有很多文章。

如:http://python.jobbole.com/all-posts/

目标:

将某个网站脚本编程-》python模块这个分类下所有的文章标题和网址提取(就相当于一个目录索引了)

在目录中找东西总好过一页页点击网页上的下一页吧。

为什么用python来实现呢,因为实在太简单易用了。在不考虑效率的情况下是大大方便了我等小白

我感觉我用爬虫得几个原因:

自从百度的site、intitle、inurl等这类搜索命令失效之后搜索关键内容的灵活度降低了,找不到想要的内容

技术博客里面有很多文章分类,可是一个分类下的文章遗憾的就是没有目录,难道要一页一页地打开网页查找么

不过不试不知道,一个简单的爬虫也牵扯了挺多东西的,总结一下

1、正则表达式,为了一行代码,把正则表达式的东西又加深学习了一遍了,无分组捕获、命名捕获、零宽断言、贪婪模式等等以前没有听过的东东。具体自己去了解吧!

2、urllib的使用,简单的使用也会有问题,看错误如下

   IOError: ('http protocol error', 0, 'got a bad status line', None)

http://blog.csdn.net/yueguanghaidao/article/details/11994229 中有解释是因为http://www.website.com/需要在域名后加"/",不然会报"IOError: ('http protocol error', 0, 'got a bad status line', None)”。我第一次抓取的网页有这个错误,加了“/”访问网页直接返回404。我换成urllib2就有错误“httplib.BadStatusLine”

后来发现IOERROR是因为那个坑爹的网页本来就有问题,前一刻访问好好的,程序没写完就变成了足彩网站了。我可以理解为网站管理员休假了么。

3、中文编码问题,成功抓取了可是显示了一片看不明白的东东。看了下encode(),decode()毫无头绪,我怎么知道用什么来解码啊

>>> print fi
['python chardet\xc4\xa3\xbf\xe9\xc5\xd0\xb6\xcf\xd7\xd6\xb7\xfb\xb1\xe0\xc2\xeb'

引用一段:出自http://www.linuxidc.com/Linux/2014-11/109853.htm

decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode(‘gb2312’),表示将gb2312编码的字符串str1转换成unicode编码,因此,如果str1本身不是gb2312编码,就会报错。 
encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode(‘gb2312’),表示将unicode编码的字符串str2转换成gb2312编码,因此,需要str2本身的编码是unicode。
总结一下, 
u.encode(‘…’)基本上总是能成功的,只要你填写了正确的目标编码。这就像任何文件都可以压缩成zip文件,是一个道理。 
s.decode(‘…’)经常会出错,因为s是什么“编码”取决于上下文,当你解码的时候需要确保s是用什编码。就像打开zip文件的时候,你要确保它确实是zip文件,而不仅仅是伪造了扩展名的zip文件。

可以发现C4A3的编码是GBK,哈哈,别介意我作弊,然后成功解码。

#coding=utf-8
import urllib2
import re
import time
pattern_site_title=re.compile(r'(?<=<a class="archive-title" target="_blank" href=")(.*)(?="\stitle="(.*)">)')
for page in range(1,10):
url='http://python.jobbole.com/all-posts/page/%d/'%page
try:
url_open=urllib2.urlopen(url)
except:
exit()
print "urlopen error!" result=pattern_site_title.findall(url_open.read())
print "--------------------------------------------------------------"
for i in range(0,len(result)):
print "%s %s"%result[i]
time.sleep(3)
url_open.close()

正则表达式是个值得研究的地方,怎样才能匹配到自己需要的内容。简单的几行程序,实现了需要的功能。有更多的需要还可以在这基础上扩展。噢~~python真是个好东西

python——简单爬虫的更多相关文章

  1. Python简单爬虫入门三

    我们继续研究BeautifulSoup分类打印输出 Python简单爬虫入门一 Python简单爬虫入门二 前两部主要讲述我们如何用BeautifulSoup怎去抓取网页信息以及获取相应的图片标题等信 ...

  2. Python简单爬虫入门二

    接着上一次爬虫我们继续研究BeautifulSoup Python简单爬虫入门一 上一次我们爬虫我们已经成功的爬下了网页的源代码,那么这一次我们将继续来写怎么抓去具体想要的元素 首先回顾以下我们Bea ...

  3. GJM : Python简单爬虫入门(二) [转载]

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...

  4. Python 简单爬虫案例

    Python 简单爬虫案例 import requests url = "https://www.sogou.com/web" # 封装参数 wd = input('enter a ...

  5. Python简单爬虫记录

    为了避免自己忘了Python的爬虫相关知识和流程,下面简单的记录一下爬虫的基本要求和编程问题!! 简单了解了一下,爬虫的方法很多,我简单的使用了已经做好的库requests来获取网页信息和Beauti ...

  6. Python简单爬虫

    爬虫简介 自动抓取互联网信息的程序 从一个词条的URL访问到所有相关词条的URL,并提取出有价值的数据 价值:互联网的数据为我所用 简单爬虫架构 实现爬虫,需要从以下几个方面考虑 爬虫调度端:启动爬虫 ...

  7. python简单爬虫一

    简单的说,爬虫的意思就是根据url访问请求,然后对返回的数据进行提取,获取对自己有用的信息.然后我们可以将这些有用的信息保存到数据库或者保存到文件中.如果我们手工一个一个访问提取非常慢,所以我们需要编 ...

  8. python 简单爬虫(beatifulsoup)

    ---恢复内容开始--- python爬虫学习从0开始 第一次学习了python语法,迫不及待的来开始python的项目.首先接触了爬虫,是一个简单爬虫.个人感觉python非常简洁,相比起java或 ...

  9. python 简单爬虫diy

    简单爬虫直接diy, 复杂的用scrapy import urllib2 import re from bs4 import BeautifulSoap req = urllib2.Request(u ...

  10. Python简单爬虫入门一

    为大家介绍一个简单的爬虫工具BeautifulSoup BeautifulSoup拥有强大的解析网页及查找元素的功能本次测试环境为python3.4(由于python2.7编码格式问题) 此工具在搜索 ...

随机推荐

  1. MFC笔记1

    1.在对话框文档中定义两个定时器,每间隔5秒弹出一个消息框提示“定时器1”,每隔5秒弹出一个消息框提示“定时器2” UINT ID_TIMER1 = 1 , ID_TIMER2 = 2;   //设置 ...

  2. Unity&UGUI

    UI:User Interface 用户交互接口,处理用户与程序直接的交互 新建一个UI控件,都会同时新建两个物体: --Canvas:画布,所有的UI控件都必须放到画布上 --EnventSyste ...

  3. openjdk1.8 源码地址

    http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/656ab3b39178/src/

  4. Jmeter(二十七)模拟发送TCP/UDP/HTTP/FTP等请求包(转载)

    转载自 http://www.cnblogs.com/yangxia-test JMeter安装UDP插件后支持发送UDP协议的请求包,官方介绍安装插件后可以用来测试DNS, NTP, TFTP, B ...

  5. Java 并发AQS

    转载出处:http://www.cnblogs.com/waterystone/ 一.概述 谈到并发,不得不谈ReentrantLock:而谈到ReentrantLock,不得不谈AbstractQu ...

  6. cf-Global Round2-D. Frets On Fire(二分)

    题目链接:http://codeforces.com/contest/1119/problem/D 题意:给n(<=1e5)个数s[i],i=1..n,(0<=s[i]<=1e18) ...

  7. 求组合数的O(n^2)和O(n)解法及模板

    概率论中的组合数应该比较熟悉吧,在数论中组合数也具有重大意义,下面介绍组合数的解法: 方法一O(n^2): 利用公式(n,m)=(n-1,m-1)+(n-1,m): 模板: #include<c ...

  8. 打印信息,通过.jasper工具将集合输出到PDF文件 然后利用打印机打印文件

    我们上一次成功的利用iReport工具制作了一张报表,并且预览了报表最后的效果,也生成了格式为“jrpxml”.“jrxml”与“jasper”的文件.这次,我们使用jasper提供的java的api ...

  9. Codeforces Beta Round #74 (Div. 2 Only)

    Codeforces Beta Round #74 (Div. 2 Only) http://codeforces.com/contest/90 A #include<iostream> ...

  10. js和jquery实现图片无缝轮播的不同写法

    多掌握一种方法总是会有好处的,学习编程就要多思考,举一反三 下面写一下实现图片自动播放的代码,由于学习的是javascript,代码量很大,所以又学习了jquery库的操作,非常简便 还有非常有逼格的 ...