如何用Python来找你喜欢的妹子?

先上效果图吧,no pic say bird!

创新互联建站-专业网站定制、快速模板网站建设、高性价比渑池网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式渑池网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖渑池地区。费用合理售后完善,10年实体公司更值得信赖。

我之前写了一个抓取妹子资料的文章,主要是使用selenium来模拟网页操作,然后使用动态加载,再用xpath来提取网页的资料,但这种方式效率不高。

所以今天我再补一个高效获取数据的办法.由于并没有什么模拟的操作,一切都可以人工来控制,所以也不需要打开网页就能获取数据!

但我们需要分析这个网页,打开网页 http://www.lovewzly.com/jiaoyou.html 后,按F12,进入Network项中

url在筛选条件后,只有page在发生变化,而且是一页页的累加,而且我们把这个url在浏览器中打开,会得到一批json字符串,所以我可以直接操作这里面的json数据,然后进行存储即可!

代码结构图:

操作流程:

  • headers 一定要构建反盗链以及模拟浏览器操作,先这样写,可以避免后续问题!
  • 条件拼装
  • 然后记得数据转json格式
  • 然后对json数据进行提取,
  • 把提取到的数据放到文件或者存储起来

主要学习到的技术:

  • 学习requests+urllib
  • 操作execl
  • 文件操作
  • 字符串
  • 异常处理
  • 另外其它基础

请求数据:

 
 
 
 
  1. def craw_data(self):
  2.         '''数据抓取'''
  3.         headers = {
  4.             'Referer': 'http://www.lovewzly.com/jiaoyou.html',
  5.             'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.4620.400 QQBrowser/9.7.13014.400'
  6.         }
  7.         page = 1
  8.         while True:
  9.             query_data = {
  10.                 'page':page,
  11.                 'gender':self.gender,
  12.                 'starage':self.stargage,
  13.                 'endage':self.endgage,
  14.                 'stratheight':self.startheight,
  15.                 'endheight':self.endheight,
  16.                 'marry':self.marry,
  17.                 'salary':self.salary,
  18.             }
  19.             url = 'http://www.lovewzly.com/api/user/pc/list/search?'+urllib.urlencode(query_data)
  20.             print url
  21.             req = urllib2.Request(url, headers=headers)
  22.             response = urllib2.urlopen(req).read()
  23.             # print response
  24.             self.parse_data(response)
  25.             page += 1

字段提取:

 
 
 
 
  1. def parse_data(self,response):
  2.       '''数据解析'''
  3.       persons = json.loads(response).get('data').get('list')
  4.       if persons is None:
  5.           print '数据已经请求完毕'
  6.           return
  7.       for person in persons:
  8.           nick = person.get('username')
  9.           gender = person.get('gender')
  10.           age = 2018 - int(person.get('birthdayyear'))
  11.           address = person.get('city')
  12.           heart = person.get('monolog')
  13.           height = person.get('height')
  14.           img_url = person.get('avatar')
  15.           education = person.get('education')
  16.           print nick,age,height,address,heart,education
  17.           self.store_info(nick,age,height,address,heart,education,img_url)
  18.           self.store_info_execl(nick,age,height,address,heart,education,img_url)

文件存放:

 
 
 
 
  1. def store_info(self, nick,age,height,address,heart,education,img_url):
  2.         '''
  3.         存照片,与他们的内心独白
  4.         '''
  5.         if age < 22:
  6.             tag = '22岁以下'
  7.         elif 22 <= age < 28:
  8.             tag = '22-28岁'
  9.         elif 28 <= age < 32:
  10.             tag = '28-32岁'
  11.         elif 32 <= age:
  12.             tag = '32岁以上'
  13.         filename = u'{}岁_身高{}_学历{}_{}_{}.jpg'.format(age,height,education, address, nick)
  14.         try:
  15.             # 补全文件目录
  16.             image_path = u'E:/store/pic/{}'.format(tag)
  17.             # 判断文件夹是否存在。
  18.             if not os.path.exists(image_path):
  19.                 os.makedirs(image_path)
  20.                 print image_path + ' 创建成功'
  21.             # 注意这里是写入图片,要用二进制格式写入。
  22.             with open(image_path + '/' + filename, 'wb') as f:
  23.                 f.write(urllib.urlopen(img_url).read())
  24.             txt_path = u'E:/store/txt'
  25.             txt_name = u'内心独白.txt'
  26.             # 判断文件夹是否存在。
  27.             if not os.path.exists(txt_path):
  28.                 os.makedirs(txt_path)
  29.                 print txt_path + ' 创建成功'
  30.             # 写入txt文本
  31.             with open(txt_path + '/' + txt_name, 'a') as f:
  32.                 f.write(heart)
  33.         except Exception as e:
  34.             e.message

execl操作:

 
 
 
 
  1. def store_info_execl(self,nick,age,height,address,heart,education,img_url):
  2.        person = []
  3.        person.append(self.count)   #正好是数据条
  4.        person.append(nick)
  5.        person.append(u'女' if self.gender == 2 else u'男')
  6.        person.append(age)
  7.        person.append(height)
  8.        person.append(address)
  9.        person.append(education)
  10.        person.append(heart)
  11.        person.append(img_url)
  12.        for j in range(len(person)):
  13.            self.sheetInfo.write(self.count, j, person[j])
  14.        self.f.save(u'我主良缘.xlsx')
  15.        self.count += 1
  16.        print '插入了{}条数据'.format(self.count)

***展现!

源码地址:https://github.com/pythonchannel/python27/blob/master/test/meizhi.py

分享文章:如何用Python来找你喜欢的妹子?
本文URL:http://www.shufengxianlan.com/qtweb/news43/75743.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联