这是一个小的网页爬虫,主要参考博客 虫师 . 代码大部分是原作者虫师的,我将自己的一些理解加入到里面。
大致思路是:首先我们需要使用模块 urllib
中的函数urlopen
将网页下载下来,其次利用正则表达式查找需要的内容。
下面是一些注意的细节。
使用正则表达式首先需要导入模块re
,函数compile
是把正则表达式转换成一个正则表达式对象。在IDE中利用help(compile)
得到它的文档:
Compile a regular expression pattern, returning a pattern object.
函数findall
是在文件中将正则表达式对象取出来做成一个list。
最后我们就可以将这个list打印出来。
查看网页html代码的方法:我使用Firefox浏览器,任意打开一个网页,在相关超链接下点击右键,在菜单中打开查看元素
就可以看到html源代码。
下面的代码将百度贴吧中的任取的一页中的发帖作者打印出来。
#coding=utf-8
import urllib
import re
def get_html_file():
page=urllib.urlopen("http://tieba.baidu.com/f?kw=%E9%A3%8E%E6%99%AF&fr=wwwt") #打开网页
html=page.read() #读取整个html文件
return html
h=get_html_file() #下载网页
def get_title(html):
reg=r'主题作者.+"' #所要查找的正则表达式(选取时可能需要多试几个表达式才能达到想要的结果)
Title=re.compile(reg) #将正则表达式转换成正则表达式对象
tlist=re.findall(Title,html)#在html中查找正则表达式对象tlist
#打印list
i=1
for g in tlist:
print i
print g
i+=1
get_title(h)