用Python做有趣的事情

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

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

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

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

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

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

代码结构图:

操作流程:

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

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

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

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

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

  1. 「docker实战篇」python的docker-抖音appium模拟滑动操作(22)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:「docker实战篇」python的docker-抖音appium模拟滑动操作(22) 上次代码写到了可以通过接口获取粉丝的数 ...

  2. Python和Java结合的项目实战_[项目实战] Python高级教程项目实战篇 Python和Java结合的项目实战 视频教程 [...

    资源介绍 课程简介:xa0xa0 Python高级教程项目实战篇 Python和Java结合的项目实战 视频教程 教学视频 ----------------------课程目录 Python项目实战篇 ...

  3. python docker自动化_「docker实战篇」python的docker爬虫技术-移动自动化控制工具appium工具(17)...

    原创文章,欢迎转载.转载请注明:转载自 IT人故事会,谢谢! 原文链接地址: 「docker实战篇」python的docker爬虫技术-移动自动化控制工具appium工具(17) Appium是一个开 ...

  4. python docker自动化_「docker实战篇」python的docker爬虫技术-移动自动化控制工具安卓ADB的使用(15)...

    原创文章,欢迎转载.转载请注明:转载自 IT人故事会,谢谢! 原文链接地址: 「docker实战篇」python的docker爬虫技术-移动自动化控制工具安卓ADB的使用(15) adb(Androi ...

  5. 「docker实战篇」python的docker爬虫技术-在linux下mitmproxy介绍和安装(四)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:「docker实战篇」python的docker爬虫技术-在linux下mitmproxy介绍和安装(四) 上次说了fiddl ...

  6. 「docker实战篇」python的docker爬虫技术-安卓模拟器(二)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:「docker实战篇」python的docker爬虫技术-安卓模拟器(二) 为什么要手机模拟器,如果有条件正好有不使用的安卓手 ...

  7. 「docker实战篇」python的docker-打造多任务端app应用数据抓取系统(下)(35)

    上次已经把python文件挂载到虚拟机上了,这次主要设置下虚拟机通过docker容器的方式. 运行 python 代码运行 >启动一个crt的会话 docker run -it -v /root ...

  8. docker android模拟器,「docker实战篇」python的docker-创建appium容器以及设置appium容器连接安卓模拟器(31)...

    上一节已经下载好了appium的镜像,接下来说下如何创建appium如何创建容器和模拟器如何连接appium容器.源码:https://github.com/limingios/dockerpytho ...

  9. python26章_44G-26章节Python盖世修炼最新实战 全新升级版Python全栈架构师高级课程 从零实战...

    44G-26章节Python盖世修炼最新实战 全新升级版Python全栈架构师高级课程 从零实战 ===============课程目录=============== 课程目录过长,下面只列出了章节目 ...

最新文章

  1. 古朴西安:乘汽船去机场
  2. C#中如何将将数据导出到word excel 中
  3. python代码大全表解释-python操作列表的函数使用代码详解
  4. android实现过程,Android:一个完整app开发流程
  5. 剑指offer:50-53记录
  6. mysql查看现在使用的引擎_mysql查看当前库使用的引擎及简单操作
  7. js中typeof与instanceof用法小记
  8. sharepoint页面添加后台代码
  9. html没有prefix属性,HTML前缀属性(Open Graph Protocol)的含义?
  10. java从property中取值_Java中如何获取Properties文件中的内容2019-08-02
  11. 风车IM即时通讯聊天系统源码
  12. Java面试:应聘Java开发工程师的基本要求是什么?
  13. 美丽心灵:纪念 John Nash 夫妇
  14. plc云网关与串口服务器区别,plc智能网关和传统工业路由器有什么区别
  15. vue3 图片懒加载的实现
  16. ParameterResolutionException单元测试方法中添加了参数,这是不允许的
  17. WPS广告投放的优势!WPS广告投放的展现形式!
  18. 调查计算机对运算能力的影响,计算器对运算能力的影响的报告.docx
  19. 怎样让云盘和服务器同步更新,百度云网盘怎么设置同步文件夹、怎么进行文件同步?...
  20. 非常感人的情感日志:这些话看哭了很多人

热门文章

  1. anddroid悬浮窗的手机QQ后台清理不掉的秘密
  2. WP7开发小技巧之快捷键
  3. ASP.NET MVC: 构建不带 Web 窗体的 Web 应用程序(转载)
  4. 【操作系统复习】进程控制
  5. 2017年网易校招题 输入一个数将其变为斐波那契数(最小步数)
  6. 计算机专业介绍范文英文,计算机专业个人简历英文范文
  7. 灯亮怎么办_车辆隔音效果不好怎么办?
  8. 7nmarm微架构鲲鹏服务器芯片,中国电信服务器集采:同方鲲鹏服务器拿下6000万元份额...
  9. 软件需求分析文档模板_小议管理软件需求分析
  10. python元组求和_Python 列表和元组 - 学习笔记(持续更新)