python crawler0723.py

#!/usr/env  python
#-*- coding: utf-8  -*-
import urllib
import urllib2
import random
import requests
import os,sys
import MySQLdb
from sgmllib import SGMLParser
import re
num=0
def main():
    try:
        conn=MySQLdb.connect(host='localhost',user='root',passwd='123456',db='addressbookdb',charset="utf8")
        conn.query("set names utf8")
    except Exception,e:
        print e
        sys.exit()
    cursor=conn.cursor()
    for k in range(1,2574):
        url="http://apk.gfan.com/apps_7_1_"+str(k)+".html"
        html=requests.get(url)
        result=html.content
        pattern=re.compile('<a href="([http://apk.gfan.com]?/Product/App\d{1,8}.html)"')
        dataresult=re.findall(pattern,result)
        dataresult=list(set(dataresult))
        for i in dataresult:
            t="http://apk.gfan.com"+i
            print t
            html=requests.get(t)
            result=html.content
            pattern=re.compile('<div class="appdiscrib">[\s\S]*?<h4>(.+?)</h4>')
            data0=re.findall(pattern,result)
            print data0[0]
            pattern=re.compile('版 本 号(.+?)</li>')
            data1=re.findall(pattern,result)
            pattern=re.compile('开 发 者(.+?)</li>')
            data2=re.findall(pattern,result)
            pattern=re.compile('发布时间(.+?)</li>')
            data3=re.findall(pattern,result)
            pattern=re.compile('文件大小(.+?)</li>')
            data4=re.findall(pattern,result)
            pattern=re.compile('支持固件(.+?)</li>')
            data5=re.findall(pattern,result)
            pattern=re.compile('应用介绍</h3>[\s\S]*?<div class="intro">([\s\S]*?)</div>')
            data6=re.findall(pattern,result)
            for items in data6:
                pass#print re.sub('<br />',' ',items)
            sql="insert into address(name,version,developer,pubtime,filesize,support,introduction) values(%s,%s,%s,%s,%s,%s,%s)"
            for items in data6:
            
                if(data5):
                    values=(data0[0],data1[0],data2[0],data3[0],data4[0],data5[0],re.sub('<br />',' ',items))
                else:
                    values=(data0[0],data1[0],data2[0],data3[0],data4[0],'NULL',re.sub('<br />',' ',items))
                #print values
                #print sql % values
                try:
                    cursor.execute(sql,values)
                    conn.commit()
                except:
                    pass
            pattern=re.compile(' <div class="appTitle clearfix">[\s\S]*?<img src=(.+?)/>')
            data=re.findall(pattern,result)
            for j in data:
                print j
      #temp = urllib2.urlopen(i[10:])
        # 这个是保存函数,第一个参数是地址,第二个是保存的文件名,让地址的倒数8位,当做文件名
                #urllib.urlretrieve(j[1:-2], j[-40:])
                temp=requests.get(j[1:-2])
                global num
                f=file("picture/"+str(num),"w+")
                num=num+1
                print num
                f.write(temp.content)
                
    #sql="select * from address"
    #cursor.execute(sql)
    #conn.commit()
    #finalresult=cursor.fetchall()
    #if finalresult:
        #for x in finalresult:
            #pass #print x[0:]
    cursor.close()
    conn.close()
    f.close()
    
if  __name__=="__main__":
       main()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值