欧阳锋没有疯 发表于 2019-4-13 22:52

什么?爬虫还能帮助我找对象?

本帖最后由 欧阳锋没有疯 于 2019-4-13 23:25 编辑

项目地址:https://github.com/hfxjd9527/kaoyanbang
呐!标题党也不完全是有罪的。比如我,嘻嘻。

因为我超认真的在帮助单身狗(我也是{:1_936:})。不信你看:






清晰大图,就不发了,毕竟楼主也不是那种猥琐人不是;www


好了,言归正传,本帖就是针对考研帮某个神秘板块的爬虫。
主要知识点:

[*]fiddler抓包工具的使用
[*]安卓模拟器的使用
[*]分析接口


该接口最近一段时间想必不会换,如果不想要弄模拟器分析接口,直接复制代码也能运行。运行后MongoDB中就会保存大量单身男女的信息,等自己升职加薪以后......
嘻嘻,说不定还能成就一段姻缘。

关于抓包工具的使用,社区里大佬已经发过很多次了,请点:抓包工具,为所欲为?
安卓模拟器的使用,百度一大堆,这里主要讲下,安卓模拟器,安装后在设置里面,将网络设置成桥接模式,这样设置的目的就是要让安卓模拟器的数据经过fiddler抓包软件。

查看自己的网络:ipconfig

C:/Users/lee/AppData/Local/YNote/data/1725824530@qq.com/f2bcd94d08504455bad9bf89dc94ad34/clipboard.png
对手机的设置:

C:/Users/lee/AppData/Local/YNote/data/1725824530@qq.com/e8735cefde314e32aaf5f828176cf884/clipboard.png
长按wiredSSID

C:/Users/lee/AppData/Local/YNote/data/1725824530@qq.com/74384a7f3ad5433fa0cbc3beaaa4b5b2/clipboard.png
修改网络:
C:/Users/lee/AppData/Local/YNote/data/1725824530@qq.com/4f87e1d09204468482de9815ca873b5a/clipboard.png

设置代{过}{滤}理,安装SwitchyOmega插件,新建一个情景模式,代{过}{滤}理服务器填写本机,代{过}{滤}理端口填写在fiddler里设置的端口,然后点应用选项。
C:/Users/lee/AppData/Local/YNote/data/1725824530@qq.com/59655216c4384933ae535495d6d01543/clipboard.png
点一下小圆圈,点fiddler就启动了这个代{过}{滤}理。C:/Users/lee/AppData/Local/YNote/data/1725824530@qq.com/090d5492e9cb45849c5116f6227250e7/clipboard.png

启动代{过}{滤}理后,打开安卓模拟器,点进考研帮,找到对应的论坛,清理下fiddler,滑动论坛的帖子,就能看到抓包的结果。C:/Users/lee/AppData/Local/YNote/data/1725824530@qq.com/c1cb87b2949b40ef8f126f627db6eb98/clipboard.png

C:/Users/lee/AppData/Local/YNote/data/1725824530@qq.com/312c5a6e5cfe41ea8805d9dd5aa75dc9/clipboard.png
分析fiddler抓到的数据,可以很快找到数据接口,然后稍稍写下代码就可以将该板块的信息给抓下来了。

代码如下:
# -*- coding: utf-8 -*-
# @AuThor: frank_lee
import requests
import json
import pymongo


class Kaoyanbang():
    def __init__(self):
      self.conn = pymongo.MongoClient(host="localhost", port=27017)
      self.db = self.conn['kaoyanbang']

    def handle_requests(self, url):
      headers = {
            "Host": "mapi.kyboye.com",
            "Connection": "Keep-Alive",
            "Accept-Encoding": "gzip",
            "KY-APPVER": "3.2.9",
            "KY-APPCHG": "ky_kaoyan",
            "KY-SPEID": "10081255",
            "KY-APPTYPE": "2",
            "KY-SCHID": "1000",
            "KY-APPVERS": "86",
            "KY-SYSVER": "5.1.1",
            "KY-YEAR": "2020",
            "KY-SYSDEV": "OPPO++OPPO+R11",
            "KY-TOKEN": "316061c6cdcff2c9e411b96791a86042",
            "KY-UUID": "f341f084e029c53543d3714555b2658c",
            "User-Agent": "KaoYanBang AipBot/1.0 (KaoYanClub-Android/3.2.9; android/5.1.1; OPPO++OPPO+R11)",

      }
      response = requests.get(url, headers=headers)
      return response

    def handle_index(self):
      for i in range(6):
            url = "https://mapi.kyboye.com/club/thread/list?fid=136&type=1&typeid=0&skip=" + \
                str(26 + i * 20) + "&psize=20"
            response = self.handle_requests(url)
            response_dict = json.loads(response.text)
            for dataline in response_dict['res']['list']:
                friends_info = {}
                friends_info['uid'] = dataline['uid']
                friends_info['uname'] = dataline['uname']
                friends_info['title'] = dataline['title']
                friends_info['icon'] = dataline['icon']
                friends_info['content'] = dataline['content']
                friends_info['pics'] = dataline['pics']
                self.save_to_mongo(friends_info)
                print(friends_info)

    def save_to_mongo(self, result):
      if self.db['friends'].insert(result):
            print("保存成功")


if __name__ == '__main__':
    k = Kaoyanbang()
    k.handle_index()

C:/Users/lee/AppData/Local/YNote/data/1725824530@qq.com/01740816876d43008acf983109852ea7/clipboard.png

这是比较简单的抓取,后来我想能不能换下ip地址,毕竟这样直来直去的抓,如果有反爬机制,很容易被封,于是我看到了这个(https://github.com/Python3WebSpider/ProxyPool)。后来安装了大佬的ip代{过}{滤}理池后,
发现他的代{过}{滤}理也是通过抓取普通代{过}{滤}理网站的代{过}{滤}理然后自己封装一下,于是我自己也弄了个简易版ip池(https://github.com/hfxjd9527/ip_proxy_pool),这样自己在爬虫的时候就可以使用自己抓取的ip了。
美滋滋。
因为经常听到多线程,多进程,自己实现较少,然后复习了一下多进程,搞了一下多进程抓取。如果真的感兴趣,可以参考我的项目代码:通过多种方式爬取考研帮-玫瑰初相遇板块(https://github.com/hfxjd9527/kaoyanbang)
也可在论坛回复帖子。


以上,都不重要,重要的是如果你正单身,那么考研帮这个版块的名字叫做“玫瑰初相遇”,本想弄个gif演示,奈何发帖限制图片大小,所以点(https://github.com/hfxjd9527/kaoyanbang)就可以看到了。

欧阳锋没有疯 发表于 2019-4-15 09:10

和风一号 发表于 2019-4-14 23:17
啊?考研帮还有这个板块?孤陋寡闻了。另外,祝楼主早日爬到对象嘻嘻

多谢捧场:lol

mjjmjj2008 发表于 2019-4-13 23:07

爬出一个对象

Shervict 发表于 2019-4-13 23:09

爬出了一个对象哈哈哈哈哈哈

欧阳锋没有疯 发表于 2019-4-13 23:10

什么鬼?认真编辑了两遍,为啥图片还显示我本地的地址??:@

砸七砸八 发表于 2019-4-13 23:14

所以楼主爬到对象了没{:1_918:}

E式丶男孩 发表于 2019-4-13 23:25

都是考研的

欧阳锋没有疯 发表于 2019-4-13 23:27

唉,这个发帖太烦人了。你们能看到我的图片是我本地地址么?

欧阳锋没有疯 发表于 2019-4-13 23:27

砸七砸八 发表于 2019-4-13 23:14
所以楼主爬到对象了没

然而并。。。{:1_918:}

ilhuyi 发表于 2019-4-13 23:32

sealow 发表于 2019-4-14 07:29

不怕爬到骗子
页: [1] 2
查看完整版本: 什么?爬虫还能帮助我找对象?