当前位置:首页 > 科技 >

用python编写网页爬虫

发布时间:2017-09-12 15:28:32

用python编写网页爬虫

一、前期准备

为了完成一个网页爬虫的小程序,需要有以下准备:

1 了解基本的http协议

2 urllib2库接口熟悉

3 熟悉python正则表达式

二、程序编写思路

这里只是实现一个基本的网页爬虫程序,它的基本思路如下:

1 寻找到需要抓取的网页,查看其源代码,分析需要获取网页页面的html规律

2 利用urllib2库来读取所需要的网页

3 利用正则表达式正确提取出所需要的网页信息

4 对获取的网页数据信息进行有效性校验工作,即信息的甄别

5 对有效的数据信息进行保存,如存放于文件,或数据库db中


三、抓取网页代理服务器爬虫的实例

找到一个代理服务器的网站,如
我们需要将http://www.cnproxy.com/proxy1.html下的IP,站群系统,端口,type和area字段提取出来。主要利用正则表达式和urllib2库,代码如下:

[python]
proxylist1=Queue.Queue()#用于存放从页面中抓取的所有服务器代理IP地址和端口号
portdicts = {'z':"3", 'm':"4", 'a':"2", 'l':"9", 'f':"0", 'b':"5", 'i':"7", 'w':"6", 'x':"8", 'c':"1", 'r':"8", 'd':"0"}
def get_proxy_from_cnproxy():
global proxylist1

p = re.compile(r'''''<tr><td>(.+?)<SCRIPT type=text/javascript>document.write\(":"\+(.+?)\)</SCRIPT></td><td>(.+?)</td><td>.+?</td><td>(.+?)</td></tr>''')


for i in range(1,11):
target = r"http://www.cnproxy.com/proxy%d.html" %i
print target
req = urllib2.urlopen(target)
result = req.read()
matchs = p.findall(result)
#print matchs

for row in matchs:
ip = row[0]
port = row[1]
if port is None:
continue
tmp = port.split('+')

#发现在html中的端口找不到一些键所对应的值,过滤掉这些IP
flag = 0
for x in tmp:
if x not in portdicts:
flag = 1
break
if flag == 1:
continue

port = map(lambda x: portdicts[x], port.split('+'))
port = ''.join(port)
agent = row[2]
addr = row[3].decode("cp936").encode("utf-8")

l = [ip, port, agent, addr]
print l
proxylist1.put(l)

print "page 1-10 size:%s nums proxy info" %proxylist1.qsize()

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:武汉网站建设 http://wuhan.45qun.com