近日在今日头条上偶读一篇文章, 单身狗们敢留下你的自身条件吗? 帮你们找对象 看到各位单身狗们纷纷留言, 身为单身狗的我也激动不已留下自己的评论, 然后去找寻合适的女孩子, 然评论太多1w多条评论看的我眼花缭乱! 于是乎灵机一动何不抓取评论存入数据库, 根据SQL 语句查找我想要的评论呢?
说干就干首先在网页上看评论发现只能看到一部分,于是打开青花瓷 设置ip 代理开始抓包, 然而一看竟然是connect 连接 不是熟悉的GET 和 POST 此路不通
打开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())
最后得到数据库
执行SQL 查询语句得到你想要的评论, 再根据昵称就可以给你心目中的小姐姐发消息了!
最后附看到的一首打油诗
平日无事不出门,好友列表缺异性。
几把联盟撸到晚,宅到深处自然单。
单久见谁都清秀,无奈撩妹技不佳。
口齿笨拙少情话,钢铁直男女见怕。
偶有上街遇情侣,出双入对徒扎心。
咬牙誓要把妞泡,惊觉口袋没有钱。
单身多年无人问,三姑六姨崔人烦。
周遭好友陆续婚,留我一人饱狗粮。
转眼而立悄然至,亲友牵线把亲相。
一入相亲深似海,可惜无人得眼缘。
又是几年匆匆过,中年发福渐油腻。
翩翩少年人已老,方知爱情是浮云。
传宗接代事为大,今朝醒悟尚未迟。
跪问苍天妻何在,苍天遥指此篇文。