Python学习笔记(四) -- 简单的爬虫

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/iov_aaron/article/details/44923905

简单的了解了下爬虫的教程,然后自己写了个小程序。

公司使用jira管理各种问题及流程跟踪,我主要负责域名解析这块的,目前想把jira上所有的域名相关的单号给爬出来

由于jira需要登录,因此首先看看登录需要POST的信息:
通过firefox截取的登录页面的信息

需要POST5个字段信息:

具体代码:

# -*- coding: utf-8 -*-
#---------------------------------------
#   程序:jira爬虫
#   版本:0.1
#   作者:Aaron
#   日期:2015-02-06
#   语言:Python 2.7
#   操作:输入 工号和密码
#   功能:输出 jira单号: 报告人工号 - 报告人姓名 报告人部门
#---------------------------------------

import urllib
import urllib2
import cookielib
import re

#需要POST的数据#
postdata=urllib.urlencode({  
    'os_username':'username',  
    'os_password':'password',
    'atl_token':'',
    'login':'登录',
    'os_destination':''
})

#初始化一个CookieJar来处理Cookie的信息#
cookie = cookielib.CookieJar()

#创建一个新的opener来使用我们的CookieJar#
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))

#自定义一个请求#
req = urllib2.Request(  
    url = 'http://jira.XXX.com/login.jsp',  
    data = postdata
)

#访问登陆链接#
result = opener.open(req)

#file = open("DNS.conf" ,"wb")

#访问jira(JIRA-8000到12000)链接#
for i in range(8000,12000):
    rsp = opener.open('http://jira.XXX.com/browse/JIRA-' + str(i))
    #判断是否能正常访问
    if rsp.code == 200:
        pageData = rsp.read()
        #只匹配包含域名的
        isYuming = re.findall('域名',pageData,re.S)
        if len(isYuming) != 0:
            #判断是不是子任务
            refList = re.findall('href="/browse/JIRA-(.*?)"(.*?)id="parent_issue_summary"',pageData,re.S)
            if len(refList) != 0:
                #如果是子任务,则取父任务的URL
                jiraNum = refList[0][0]
                pageData = opener.open('http://jira.XXX.com/browse/JIRA-' + jiraNum).read()

            #获取报告人工号
            Num = re.findall(r'id="issue_summary_reporter_(\d+)"',pageData,re.S)[0]
            #获取报告人姓名及部门
            Depart = re.findall(r'<span class="aui-avatar aui-avatar-small"><span class="aui-avatar-inner"><img src=".*?" /></span></span>(.*?)</span>',pageData,re.S)[1]
            print "JIRA-" + str(i) + ":" + Num + "-" + Depart.strip('\r\n')

#file.close()

没有更多推荐了,返回首页