python txt转json_实战篇 | 用Python来找你喜欢的妹子(二)

用Python做有趣的事情

最近整理一个爬虫系列方面的文章,不管大家的基础如何,我从头开始整一个爬虫系列方面的文章,让大家循序渐进的学习爬虫,小白也没有学习障碍.爬虫篇:使用Python动态爬取某大V微博,再用词云分析爬虫篇 | 动态爬取QQ说说并生成词云,分析朋友状况爬虫篇 | 200 行代码实现一个滑动验证码爬虫篇 | 学习Selenium并使用Selenium模拟登录知乎爬虫篇 | Python使用正则来爬取豆瓣图书数据爬虫篇 | 不会这几个库,都不敢说我会Python爬虫爬虫篇 | Python现学现用xpath爬取豆瓣音乐爬虫篇 | Python最重要与重用的库Request爬虫篇 | Python爬虫学前普及基础篇 | Python基础部分

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

3e1677286315079c508ba6682f4623a8.png

6f5ffd16acebf0f34b5a09b0a8d6179d.png

e0d16d8f0a31accd85ff9dfad746fe15.png

b710fa06ae87a993a513c9ec1dbc8b25.png

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

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

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

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

代码结构图:

4c20d65fd5e410a632190ebf6f153d05.png

操作流程:

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

主要学习到的技术:

  1. 学习requests+urllib

  2. 操作execl

  3. 文件操作

  4. 字符串

  5. 异常处理

  6. 另外其它基础

请求数据

 def craw_data(self):
       '''数据抓取'''
       headers = {
           'Referer': 'http://www.lovewzly.com/jiaoyou.html',
           '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'
       }
       page = 1
       while True:

           query_data = {
               'page':page,
               'gender':self.gender,
               'starage':self.stargage,
               'endage':self.endgage,
               'stratheight':self.startheight,
               'endheight':self.endheight,
               'marry':self.marry,
               'salary':self.salary,
           }
           url = 'http://www.lovewzly.com/api/user/pc/list/search?'+urllib.urlencode(query_data)
           print url
           req = urllib2.Request(url, headers=headers)
           response = urllib2.urlopen(req).read()
           # print response
           self.parse_data(response)
           page += 1

字段提取

    def parse_data(self,response):
       '''数据解析'''
       persons = json.loads(response).get('data').get('list')
       if persons is None:
           print '数据已经请求完毕'
           return

       for person in persons:
           nick = person.get('username')
           gender = person.get('gender')
           age = 2018 - int(person.get('birthdayyear'))
           address = person.get('city')
           heart = person.get('monolog')
           height = person.get('height')
           img_url = person.get('avatar')
           education = person.get('education')
           print nick,age,height,address,heart,education
           self.store_info(nick,age,height,address,heart,education,img_url)
           self.store_info_execl(nick,age,height,address,heart,education,img_url)

文件存放

   def store_info(self, nick,age,height,address,heart,education,img_url):
       '''
       存照片,与他们的内心独白
       '''
       if age < 22:
           tag = '22岁以下'
       elif 22 <= age < 28:
           tag = '22-28岁'
       elif 28 <= age < 32:
           tag = '28-32岁'
       elif 32 <= age:
           tag = '32岁以上'
       filename = u'{}岁_身高{}_学历{}_{}_{}.jpg'.format(age,height,education, address, nick)

       try:
           # 补全文件目录
           image_path = u'E:/store/pic/{}'.format(tag)
           # 判断文件夹是否存在。
           if not os.path.exists(image_path):
               os.makedirs(image_path)
               print image_path + ' 创建成功'

           # 注意这里是写入图片,要用二进制格式写入。
           with open(image_path + '/' + filename, 'wb') as f:
               f.write(urllib.urlopen(img_url).read())

           txt_path = u'E:/store/txt'
           txt_name = u'内心独白.txt'
           # 判断文件夹是否存在。
           if not os.path.exists(txt_path):
               os.makedirs(txt_path)
               print txt_path + ' 创建成功'

           # 写入txt文本
           with open(txt_path + '/' + txt_name, 'a') as f:
               f.write(heart)
       except Exception as e:
           e.message

execl操作

    def store_info_execl(self,nick,age,height,address,heart,education,img_url):
       person = []
       person.append(self.count)   #正好是数据条
       person.append(nick)
       person.append(u'女' if self.gender == 2 else u'男')
       person.append(age)
       person.append(height)
       person.append(address)
       person.append(education)
       person.append(heart)
       person.append(img_url)

       for j in range(len(person)):
           self.sheetInfo.write(self.count, j, person[j])

       self.f.save(u'我主良缘.xlsx')
       self.count += 1
       print '插入了{}条数据'.format(self.count)

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

如果你觉得文章还不错,请大家点赞分享下。你的肯定是我最大的鼓励和支持。【完】如果觉得有料,来个在看,让朋友知道你越来越优秀了说句题外话,有不少人想加我微信,看我朋友圈的每日分享,我姑且放出来,但名额有限,先来先得。我的朋友圈不止有技术分享,更有我的日常感悟,还有我个人商业思维观点 速速扫码添加!390e85ca02cc0fd83d5f0b8acf18e65b.png扫码添加,备注:公号铁粉推荐阅读

爬虫篇:使用Python动态爬取某大V微博,再用词云分析

爬虫篇 | 动态爬取QQ说说并生成词云,分析朋友状况爬虫篇 | 200 行代码实现一个滑动验证码爬虫篇 | 学习Selenium并使用Selenium模拟登录知乎爬虫篇 | Python使用正则来爬取豆瓣图书数据爬虫篇 | 不会这几个库,都不敢说我会Python爬虫爬虫篇 | Python现学现用xpath爬取豆瓣音乐爬虫篇 | Python最重要与重用的库Request爬虫篇 | Python爬虫学前普及基础篇 | Python基础部分讲真,做Python一定不要只会一个方向!04081add51b24c28f008ce67c7b2ae7d.pngbbb9e5da05fe43978e5acc88a36fc6dd.png喜欢就在

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/501033.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 切换root账号_Linux 服务器的安全保障,看看这些

作为一种开放源代码的操作系统&#xff0c;Linux 服务器以其安全&#xff0c;高效和稳定的显著优势而得以广泛应用&#xff0c;但是&#xff0c;若不加以控制&#xff0c;也不见得安全到哪里&#xff0c;这篇博文主要从账号安全控制、系统引导和登录控制的角度&#xff0c;来进…

JAVA进阶开发之(异常类)

保姆级别的异常类教学&#xff08;附代码&#xff09; 目录 1、什么是异常&#xff1a; 2、 java语言中异常以什么形式存在的呢&#xff1f; 3、异常对应的现实生活中是怎样的&#xff1f; 4、异常处理机制 5、异常处理的具体方式 6、运行时异常编写程序时可以不处理 7…

bat文件打开一闪就没了_window文件夹目录树的创建

问题描述当我们的项目文件夹逐渐丰满&#xff0c;各类文件种类繁多&#xff0c;为了增强项目资料的自明性&#xff0c;便于资料管理和交接&#xff0c;有必要对项目文件进行汇总说明。要进行文件汇总&#xff0c;首先要提取文件的目录树。什么是目录树呢&#xff1f;在cmd黑窗口…

JAVA进阶开发之(异常练习题)

编写程序模拟用户注册&#xff1a; 1、程序开始执行的时候&#xff0c;提示用户输入“用户名”和“密码”信息 2、输入信息之后&#xff0c;后台JAVA程序模拟用户注册 3、注册时用户名要求长度在【6-14】之间&#xff0c;小于或者大于都表示异常 注意&#xff1a; 完成注册的…

boolean 默认_MySQL数据类型测试:BOOLEAN、TINYINT测试数据总结(第八节)

前面几节Amy给大家分享了STE集合类型和枚举类型ENUM的测试数据&#xff0c;还没来得及看到的读者可以点击这里查看往期文章。之前看到一些平台上很多人咨询mysql是否提供布尔类型的问题。MySQL数据库确实提供布尔类型&#xff0c;此数据类型的关键字可以写成&#xff1a;布尔类…

netty cpu 占用率 高_Netty 是如何支撑高性能网络通信的?

作为一个高性能的 NIO 通信框架&#xff0c;Netty 被广泛应用于大数据处理、互联网消息中间件、游戏和金融行业等。大多数应用场景对底层的通信框架都有很高的性能要求&#xff0c;作为综合性能最高的 NIO 框架 之一&#xff0c;Netty 可以完全满足不同领域对高性能通信的需求。…

JAVA进阶教学之(单链表数据结构)

什么是链表&#xff1a; 内存地址不连续&#xff0c;基本单元是节点对象Node&#xff0c;单链表尾结点默认是null 什么是链表中的节点&#xff1a; 节点是单链表中的基本单元&#xff0c;每一个节点都有两个属性 属性一&#xff1a;存储的数据 属性二&#xff1a;下一个节点的内…

eclipse maven打包_Maven 学习

1 Maven 简介Maven 使用项目对象模型&#xff08;POM&#xff0c;Project Object Model&#xff09; 的概念&#xff0c;可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具2 Maven 的下载与IDE 的整合1 下载地址http://maven.apche.org2 Eclipse 整合Mave…

口琴膜片什么作用_2020年半音阶口琴选购攻略,让小白告别选择困难

为什么我会喜欢上口琴&#xff0c;其实是因为小时候看到《数码宝贝》里的阿和吹奏口琴&#xff0c;当时觉得很酷。不过家里条件很差&#xff0c;想要一个但是没提&#xff0c;后来工作买了一把铃木的。不过选口琴是一个很麻烦的事情&#xff0c;品类太多。在了解的过程中&#…

JAVA进阶教学之(集合)

目录 1、集合概述 2、集合存储的数据类型 3、不同的集合&#xff0c;底层都会对应不同的数据结构 4、集合继承结构图&#xff08;部分接口和类&#xff09; 5、Collection接口中常用的方法 6、Collection 集合迭代&#xff08;遍历&#xff09; 7、Collection的contains…

python中有数组吗_python有数组吗

广告关闭 腾讯云11.11云上盛惠 &#xff0c;精选热门产品助力上云&#xff0c;云服务器首年88元起&#xff0c;买的越多返的越多&#xff0c;最高返5000元&#xff01;感悟&#xff1a; 1.python列表操作里不允许变量类型的指针2.case1类似于冒泡排序操作&#xff0c;这个是满足…

flutter天气_牛笔!自己用Flutter撸一个天气APP

这是一款简约风格的 flutter 天气项目&#xff0c;提供实时、多日、24 小时、台风路径以及生活指数等服务&#xff0c;支持定位、删除、搜索等操作。下图为主页效果&#xff1a;开始本身作为天气 APP&#xff0c;自定义绘制自然少不了&#xff0c;首页多样的背景效果&#xff0…

电脑远程凭证不工作:解决

电脑 远程桌面连接你的凭据不工作解决方法 方法/步骤 第一步我们首先需要知道远程桌面连接你的凭据不工作原因是&#xff0c;远程的电脑拒绝了访问&#xff0c;需要设置在远程的电脑上设置安全选项&#xff0c;按winR键&#xff0c;打开运行&#xff0c;输入“gpedit.msc”&a…

python汉诺塔递归算法_Python文摘:汉诺塔问题与递归算法

历史传说&#xff1a; 在世界中心贝拿勒斯&#xff08;在印度北部&#xff09;的圣庙里&#xff0c;一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候&#xff0c;在其中一根针上从下到上地穿好了由大到小的64片金片&#xff0c;这就是所谓的汉诺塔。不论白天黑夜…

转-递归教学

作者&#xff1a;帅地 链接&#xff1a;https://www.zhihu.com/question/31412436/answer/683820765 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 递归专题连续刷题半年&#xff0c;从小白到学会了套路&#xff…

android游戏编程之从零开始_纯C语言程序员写的编程新手入门基础小游戏之最炫酷推箱子...

很多编程爱好者都编写过推箱子游戏编程吧&#xff0c;最近有好些朋友看见我以前的推箱子程序后&#xff0c;问我是怎么做的。我一直想把这个程序的整个过程写一份详细的东西&#xff0c;与各位编程爱好者分享&#xff0c;一直没空。正好现在放假了&#xff0c;而且离回家还有几…

c++ h cpp文件如何关联_C++核心准则SF.5: .cpp文件必须包含定义它接口的.h文件

SF.5: A .cpp file must include the .h file(s) that defines its interfaceSF.5: .cpp文件必须包含定义它接口的.h文件Reason(原因)This enables the compiler to do an early consistency check.这样可以让编译器尽早进行一致性检查。Example, bad(反面示例)// foo.h:void f…

JAVA进阶教学之(IO流)

目录 1、什么是IO流 2、流的分类 3、流的四大家族首领 4、java.io.*包下需要掌握的16个流 5、FileInputStream的实用方法 6、FileOutputStream的方法 7、文件复制/拷贝 8、FileReader的使用 9、FileWriter的使用 10、复制普通文本文件 11、BufferedReader带有缓冲区…

devtools安装_R语言如何批量安装软件包

1. 为什么要批量安装R语言包当你在新的环境下&#xff0c; 安装R语言时&#xff0c;你需要安装很多包&#xff0c;比如tidyverse&#xff0c;比如data.table&#xff0c;这里你可以写一个函数&#xff0c;将所有需要的包写进去&#xff0c;然后进行批量安装2. 程序如下&#xf…

JAVA进阶教学之(序列化和反序列化)

目录 1、序列化Serialize和反序列化的概念 2、序列化和反序列化的代码演示&#xff1a; 3、序列化多个对象&#xff08;序列化集合&#xff09; 4、transient关键字将部分属性不参与序列化 1、序列化Serialize和反序列化的概念 在内存和硬盘的数据交互过程中&#xff0c;将…