程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2023-06(1)

【Python爬虫案例学习】python爬取淘宝里的手机报价并以价格排序

发布于2019-08-05 11:06     阅读(1042)     评论(0)     点赞(1)     收藏(1)


第一步:

先分析这个url,”?“后面的都是它的关键字,requests中get函数的关键字的参数是params,post函数的关键字参数是data,

关键字用字典的形式传进去,这样我们就可以自己改关键字去搜索别的东西或者是搜索别的页面,我对手机比较感兴趣所以

就爬取了关于手机的页面。

第二步:

直接先给出源代码,然后细节再慢慢的说。

# encoding:utf8
import requests
import re
'''
遇到不懂的问题?Python学习交流群:821460695满足你的需求,资料都已经上传群文件,可以自行下载!
'''
def printGoodsList(list):
    list = sorted(list,key=lambda x: x[1],reverse=True)
    m = '{:16}\t{:8}'
    print(m.format("商品名称", "商品价格"))
    for i in list:
        print(m.format(i[0],i[1]))
def main():
    phone = []
    data={
        'q':'手机',
        's':0
        }
    url = 'https://s.taobao.com/search'
    for i in range(0,48*10,48):
        data['s'] = i
        try:
            r = requests.get(url,params=data)
            r.encoding=r.apparent_encoding
            html = r.text
            reg = r'"title":"(.*?)".*?"price":"(.*?)"'
            phonelist = re.findall(reg, html)
        except:
            print("失败")
        for a in phonelist:
            if(int(a[1])>4000):
                phone.append((a[0],int(a[1])))
    printGoodsList(phone)

main()

从main函数里看:

先定义一个phone的列表存储关于手机的信息。

然后定义一个data的字典,里面是url关键字的信息。

用一个for循环爬取多页的信息。

for循环里:

 r = requests.get(url,params=data)
 r.encoding=r.apparent_encoding
 html = r.text

这些是获取页面信息。

reg = r'"title":"(.*?)".*?"price":"(.*?)"'
phonelist = re.findall(reg, html)

用最简单的正则表达式 .*? 提取出我们想要的手机的名字跟手机的价格(正则表达式还没有深入去学习),有小伙伴想

获取其他的信息也可以自己去试试匹配你想要提取的信息,然后把提取出来的信息存放到phonelist里。获取网页信息当中要用

try except,捕捉出现的异常。

for a in phonelist:
            if(int(a[1])>4000):
                phone.append((a[0],int(a[1])))

再用一个for循环把提取到的信息添加在phone列表里(以元组的形式存放进去,因为方便之后的排序),当然你也可以再筛选其中的信息,

我就是筛选了价格高于四千的手机,看下土豪用的都是些什么手机。

然后调用printGoodsList函数,接下来我们说说这个函数:

def printGoodsList(list):
    list = sorted(list,key=lambda x: x[1],reverse=True)
    m = '{:16}\t{:8}'
    print(m.format("商品名称", "商品价格"))
    for i in list:
        print(m.format(i[0],i[1]))

函数里的一个行用到的是sorted函数,这个函数有几个参数,第一个是可迭代的对象,第二个是具有两个参数的比较的函数,第三个是进行

比较的元素,只有一个参数,最后一个参数是排序规则,默认值是False,从小到大的排序。

我用到的是lambda这个匿名函数,然后把排序后的信息赋值给list

后面就是输出我们排好序的信息。



所属网站分类: 技术文章 > 博客

作者:可以给我吃一口吗

链接:https://www.pythonheidong.com/blog/article/4209/2e2055a1ba0ed16636e0/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

1 0
收藏该文
已收藏

评论内容:(最多支持255个字符)