第一个PyQuery完整抓取网页例子

#-*-coding:utf-8-*-

from pyquery import PyQuery as pq
import CommonUtils

'''
搞趣网抓取
'''
def parseGao7(url='http://www.gao7.com/free/1-0-0-3-0-0-1') :
    result=[]
    data=pq(url)
    if data :
        lis=data('.app-list li')
        for li in lis:
            li=pq(li)
            _img=li('a img').attr('src')
            main_div=li('div.app-list-main')
            _title=main_div('h3').text()
            _category=li('p').eq(0)('span').text()
            _updtime=li('p').eq(1)('span.upd-time').text()
            _desc=li('p').eq(2).text()
            r_div=li('div.app-list-r')
            _commentnum=r_div('a').text()
            _oldpirce=r_div('p del').text()
            _newprice=r_div('p span').text()
            dict={}
            dict['img']=_img
            dict['title']=_title
            dict['category']=_category
            dict['updtime']=_updtime
            dict['comment']=_commentnum
            dict['oldprice']=_oldpirce
            dict['newproce']=_newprice
            dict['desc']=_desc
            result.append(dict)
    return result

def getNextPageUrl(url, domain='http://www.gao7.com') :
    try :
        data=CommonUtils.getUrlContent(url)
        content=pq(data)
        next_page=[i for i in content('div.ui-page a').items() if i.text()=='下一页']
        next_page_url = next_page.pop().attr('href')
        if next_page_url :
            return domain + next_page_url
    except IndexError as e1:
        print(e1)
    except Exception as e2:
        print(e2)

if __name__ == '__main__' :
    result=[]
    url = 'http://www.gao7.com/free/1-0-0-3-0-0-1'
    while url :
        print(url)
        page_result=parseGao7(url)
        result.append(page_result)
        url=getNextPageUrl(url)

    print(result)



CommonUtil.py

#-*-coding:utf-8-*-
'''
常用方法工具类
'''
import urllib.request
import gzip

'''
打印分隔符
'''
def printSplitLine(dchar='*', dnum=30) :
    print(dchar*dnum)

'''
格式化打印字典
'''
def printDict(dict):
    if dict :
        for key, value in dict.items() :
            print('key=%s; value=%s' % (key, value))

'''
格式化打印列表
'''
def printList(list):
    if list :
        for value in list :
            print(value)

'''
根据URL返回内容,有些页面可能需要gzip解压缩
'''
def getUrlContent(url):
    #返回页面内容
    doc = urllib.request.urlopen(url).read()
    #解码
    try:
        html=gzip.decompress(doc).decode("utf-8")
    except:
        html=doc.decode("utf-8")
    return html

if __name__ == '__main__' :
    #printSplitLine()
    # dict={}
    # dict['a']='aaa'
    # dict['b']='bbb'
    # dict['c']='ccc'
    # printDict(dict)

    # list=[]
    # list.append('1')
    # list.append('2')
    # list.append('3')
    # printList(list)
    print(getUrlContent('http://www.app111.com/free/'))


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值