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