bs4>>美团网

#使用面向对象的方式去爬取

import json

import urllib.request

import urllib.parse

class  MeiTuan(object):

    def __init__(self,start_page,end_page,q):

        self.start_page = start_page

        self.end_page = end_page

        self.q = q

        self.url = 'http://apimobile.meituan.com/group/v4/poi/pcsearch/1?'

        self.temp=[]

    def get_request(self,page):

        offset = (page-1) * 32

        data = {

            'uuid': '9b200d0955c947758b40.1537682343.1.0.0',

            'userid': '-1',

            'limit': '32',

            'offset': str(offset),

            'cateId': '-1',

            'q':self.q

        }

        headers = {

            'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'

        }

        data = urllib.parse.urlencode(data)

        url = self.url + data

        print(url)

        request = urllib.request.Request(url=url,headers=headers)

        return request

    #获得响应的对象

    def get_response(self,req):

        res = urllib.request.urlopen(req)

        return res

    #获得数据,提取数据

    def get_content(self,res):

        content = res.read().decode("utf8")

        datas = json.loads(content)

        data = datas['data']['searchResult']

        for i in data:

            # print(i)

            jbmz = i['title']#酒吧名字

            jbimg = i['imageUrl']#酒吧图片

            jbdd = i['address']#酒吧地点

            pjxf = i['lowestprice']#酒吧人均消费

            pj = i['avgscore']#评价

            yhlist = []  # 优惠列表

            try:

                for j in i['deals']:

                    tcmz = j['title']#套餐名字

                    yhlist.append(tcmz)

                    tcjg = j['price']#套餐价格

                    yhlist.append(tcjg)

                    tcyj = j['value']#套餐原价

                    yhlist.append(tcyj)

                    tcys = j['sales']#已经售卖

                    yhlist.append(tcys)

            except:

                yhlist.append("没有优惠套餐")

            self.temp.extend([jbmz,jbimg,jbdd,pjxf,pj,yhlist])

        # return self.temp

    def run(self):

        for page in range(self.start_page,self.end_page+1):

            # 获取请求对象

            request = self.get_request(page)

            #获得响应的的对象

            response = self.get_response(request)

            #获取请求的数据

            data = self.get_content(response)

        string = str(self.temp)

        # with open('美团.txt','w',encoding='utf8') as fp:

        #         #     fp.write(string)

        #         # print('ok')

        print(string)

def main():

    q = input("输入搜索的关键字:")

    start_page = int(input("请输入起始页码:"))

    end_page = int(input("请输入终止页码:"))

    meituan = MeiTuan(start_page,end_page,q)

    meituan.run()

if __name__ == '__main__':

    main()

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Python语言特性 1 Python的函数参数传递 看两个如下例子,分析运行结果: 代码一: a = 1 def...
    时光清浅03阅读 553评论 0 0
  • Python语言特性 1 Python的函数参数传递 看两个如下例子,分析运行结果: 代码一: a = 1 def...
    伊森H阅读 3,165评论 0 15
  • 眼下教育还是一个敏感的话题,无论是素质教育还是应试教育都讨论的很火,甚至教育名家各派斗嘴,各自有各自的观点,...
    一路修行做老师阅读 345评论 1 3
  • 很多电影或者动画片里的人物都会使用超能力,我也会。那么我就在这里教大家几招吧。 一、诱惑术 将别人吸引过来的超...
    逍遥派Jack阅读 263评论 0 1
  • 1.get是从服务器上获取数据,post是向服务器传送数据。 2.get是把参数数据队列加载到提交表单的ACTIO...
    溺水的睫毛阅读 638评论 1 1

友情链接更多精彩内容