python 帮你摆脱单身

2018-10-11  本文已影响188人  生煎
近日在今日头条上偶读一篇文章, 单身狗们敢留下你的自身条件吗? 帮你们找对象 看到各位单身狗们纷纷留言, 身为单身狗的我也激动不已留下自己的评论, 然后去找寻合适的女孩子, 然评论太多1w多条评论看的我眼花缭乱! 于是乎灵机一动何不抓取评论存入数据库, 根据SQL 语句查找我想要的评论呢?
单身狗
说干就干首先在网页上看评论发现只能看到一部分,于是打开青花瓷 设置ip 代理开始抓包, 然而一看竟然是connect 连接 不是熟悉的GET 和 POST 此路不通 抓包数据

转念一想老版本的可能没加密,网上可能有人抓过类似的链接 , 终于搜索到了更改 文章的id 后为 https://ic.snssdk.com/article/v2/tab_comments/?count=20&group_id=6599202165854568968&item_id=6599202165854568968&offset=0

打开python开发工具, 创建爬虫

scrapy startproject toutiao

在items.py 中写入想要抓取的数据模型

    text = scrapy.Field()
    create_time = scrapy.Field()
    user_id = scrapy.Field()
    user_name = scrapy.Field()
    user_profile_image_url = scrapy.Field()

在spiders 目录下新建 toutiaoSpider.py

class toutiao(CrawlSpider):
    name = 'toutiao'
    start_urls = ['https://ic.snssdk.com/article/v2/tab_comments/?count=20&group_id=6599202165854568968&item_id=6599202165854568968&offset=0']

    def parse(self, response):
        item = ToutiaoItem()
        data = response.text
        if data:
            content = json.loads(data)
            if content:
                datas = content.get("data")
                if datas:
                    for data in datas:
                        comment = data.get("comment")
                        if comment:
                            item['user_name'] = comment.get("user_name")
                            item['text'] = comment.get("text")
                            item['user_id'] = comment.get("user_id")
                            item['create_time'] = comment.get("create_time")
                            item['user_profile_image_url'] = comment.get("user_profile_image_url")
                            print('------')
                            yield item
        urls = [
            'https://ic.snssdk.com/article/v2/tab_comments/?count=20&group_id=6599202165854568968&item_id=6599202165854568968&offset={}'.format(
                i * 20) for i in range(0, 10)]
        for url in  urls:
            print(url)
            yield Request(url,callback = self.parse)

在 pipelines.py 通道文件中做数据库操作, 存入数据库

import mysql.connector

class ToutiaoPipeline(object):
    def __init__(self):
        self.connect = mysql.connector.connect(
            user='root', password='', database='test'
        )
        self.cursor = self.connect.cursor()
        self.cursor.execute('CREATE TABLE  IF NOT EXISTS toutiao (text longtext , create_time varchar(64) , user_id varchar(64), user_name varchar(64), user_profile_image_url varchar(64) ) default charset=utf8')
    def process_item(self, item, spider):
        query = 'insert into toutiao (text,create_time,user_id,user_name,user_profile_image_url) values(%s,%s,%s,%s,%s)'
        self.cursor.execute(query, [item['text'], item['create_time'], item['user_id'], item['user_name'],item['user_profile_image_url']])
        self.connect.commit()
        return item

    def close_spider(self, spider):
        self.connect.close()

最后就是在 setting 中打开 ITEM_PIPELINES 设置 ROBOTSTXT_OBEY 或者注释掉

# ROBOTSTXT_OBEY = True
ITEM_PIPELINES = {
   'toutiao.pipelines.ToutiaoPipeline': 300,
}

终端命令行运行scrapy 或者新建main.py 运行

from scrapy import cmdline
cmdline.execute('scrapy crawl toutiao'.split())
timg (1).jpeg

最后得到数据库 screenshot.png

执行SQL 查询语句得到你想要的评论, 再根据昵称就可以给你心目中的小姐姐发消息了!

timg.jpeg

最后附看到的一首打油诗

  平日无事不出门,好友列表缺异性。
  几把联盟撸到晚,宅到深处自然单。
  单久见谁都清秀,无奈撩妹技不佳。
  口齿笨拙少情话,钢铁直男女见怕。
  偶有上街遇情侣,出双入对徒扎心。
  咬牙誓要把妞泡,惊觉口袋没有钱。
  单身多年无人问,三姑六姨崔人烦。
  周遭好友陆续婚,留我一人饱狗粮。
  转眼而立悄然至,亲友牵线把亲相。
  一入相亲深似海,可惜无人得眼缘。
  又是几年匆匆过,中年发福渐油腻。
  翩翩少年人已老,方知爱情是浮云。
  传宗接代事为大,今朝醒悟尚未迟。
  跪问苍天妻何在,苍天遥指此篇文。
上一篇下一篇

猜你喜欢

热点阅读