抓取教程网页的小爬虫

来源:互联网 发布:ios上玩的编程游戏 编辑:程序博客网 时间:2024/05/17 23:18

First 爬虫

这是昨天下午自己突然觉得想爬点东西就开始着手写自己的爬虫。我爬的是廖雪峰老师的python课程。这是我之前见过一个代码也是爬他的网站的。自己觉得爬爬也不错。

第一步 模仿

我的第一步是仿照人家的代码,然后,自己怎么也没有搞定。问题一大
堆,后来想了想可能是由于python的版本问题。我用的是python2.7
.现在python3 因为强大的功能,越来越多的人都在使用。但我不需要
那么强大的功能,所以就用python2.7就可以了。
第一步:自己查看他的源代码和自己找的例子来分析他的思路
第二步:自己查找资料,练习和测试

第二步 写

从自己的模仿阶段发现自己越模仿越觉得乱。所以自己就开始一个模块
模块的写。首先明确自己的目标,爬取文章内容。从这方面看,自己做
的第一件事就是把网页弄下来。这比较简单,用urllib中的urlopen().read就可以把网页弄下来(这个网页比较简单,复杂的话需要伪装浏览器,模拟登陆等)

把网页弄下来之后,自己就开始尝试分析网页,把网页里面的文章内容取
出来,自己查了很多资料,结合自己的水平,这个正则表达式是比较合适
的。我自己用正则表达式做了很多的筛选,包括,文章内容,还有网页中
网络的网址。都是用正则表达进行的筛选,因为自己的能力有限,所以许
多东西分开做比较适合自己。多测试,一步接一步。

下面把自己的代码贴出来

#coding=utf-8import reimport urllib2def webspider(url):    #获取网页信息    Mypage=urllib2.urlopen(url).read()    #正则表达式匹配    MyItem=re.compile(r"<div class=\"x-wiki-content\">(.*?)</div>",re.S)    match=MyItem.search(Mypage)    text=match.group(1)    #print text    #去除特定的字符串    text1=text.replace('<p>',' ') # 赋值    text2=text1.replace('</p>',' ')    text3=text2.replace('<code>',' ')    text4=text3.replace('</code>',' ')    #修改字符串常用的标示  &#39; 代表’ &gt; 代表 >    text5=text4.replace('&#39;','\'')    text6=text5.replace('&gt;','>')    text7=text6.replace('<li>','*').replace('</li>','')    #写入文本文件中    save=open('python.txt','a')    save.write(text6)    save.close()    #print type(text)    #print text2def geturl(url):    #批量获取网页中的教程网址    Mypage=urllib2.urlopen(url).read()    MyITem=re.compile(r'margin-right:-15px;\">(.*?) </ul>',re.S)    match=MyITem.search(Mypage)    text=match.group(0)    #print text    #print type(text)    myurl=re.compile(r'<a href="/wiki(.*?)\">',re.S)    getmyurl=myurl.findall(text)    dima='http://www.liaoxuefeng.com/wiki'    #print dima+getmyurl[0]    #print type(getmyurl[0])    #构建成全新的网址    for a in getmyurl:        b=dima+a        #去除空格        b1=' '.join(b.split())        print b1        #调用直接分析        webspider(b1)if __name__ == '__main__':        #web='http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000'        web='http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/0013747381369301852037f35874be2b85aa318aad57bda000'        geturl(web)
0 0