新浪微博数据抓取方法有哪些? 您所在的位置:网站首页 微博签到脚本犯法吗知乎 新浪微博数据抓取方法有哪些?

新浪微博数据抓取方法有哪些?

2024-02-20 23:35| 来源: 网络整理| 查看: 265

想要深入了解微博上最新的动态和信息吗?那么学习如何使用Scrapy构建一个微博爬虫将是不二之选。Scrapy是一个强大的爬虫框架,能够快速地爬取网站上的数据。

基于http://weibo.com新版API构建的微博爬虫拥有最丰富的字段信息,能够更好地深入挖掘微博上的数据。提供了多种采集模式,包括微博用户、推文、粉丝、关注、转发、评论以及关键词搜索等。无论想要了解某一特定用户的信息,还是想要搜索某一特定关键词相关的微博,这款爬虫都能帮助你实现。这款爬虫的核心代码仅有百余行,代码可读性高,可以快速地按需进行定制化改造。

如果有兴趣可以参考一下一个完整的数据采集+数据分析项目。

准备工作安装相关爬虫依赖包pip install Scrapy pip install python_dateutil项目目录

整个项目目录。

spiders 目录。

获取微博账号cookie

settings.py,这里主要配置了爬虫的客户端以及抓取微博数据需要设置的 Cookie 信息,在每次启动爬虫任务的时候需要自己手动更新 Cookie 进行替换。

打码的地方自己完全复制过来就好了,保存到 cookie.txt 中。

设置代理

代理部分如果需要的话自行设置,我这里举例我的设置方式,如果需要的话就设置,不需要的话就无视就好,无需修改middlewares.py中的IPProxyMiddleware的class类。

先创建一个定时任务自动更新IP代理获取的地址。

import requests headers = { 'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Mobile Safari/537.36' } ip_url = "" html = requests.get(ip_url,headers=headers).text ip_list = html.split("\r\n")[:-1] with open(root_path + "ip.text",'w') as f: f.write(str(ip_list[0]).strip()) f.close()

在执行脚本的时候读取对应的ip地址信息。

class IPProxyMiddleware(object): def process_request(self, request, spider): with open(path,'r',encoding='utf8') as f: ip_data = f.read() proxies={ "http": "http://{}".format(ip_data), "https": "http://{}".format(ip_data), } requesta['proxy'] = proxies return None数据抓取

这里数据抓取分为几个方面,根据实际情况改写使用。

用户信息采集 user.py

该部分用户抓取用户的数据基础信息,其中需要输入抓取用户的ids号,如果需要抓取多个用户的信息,可以构建一个用户的ids列表,进行遍历处理。

import json from scrapy import Spider from scrapy.http import Request from spiders.common import parse_user_info class UserSpider(Spider): name = "user_spider" base_url = "https://weibo.cn" def start_requests(self): user_ids = [''] # 这里user_ids可替换成实际待采集的数据 urls = [f'https://weibo.com/ajax/profile/info?uid={user_id}' for user_id in user_ids] for url in urls: yield Request(url, callback=self.parse) def parse(self, response, **kwargs): data = json.loads(response.text) item = parse_user_info(data['data']['user']) url = f"https://weibo.com/ajax/profile/detail?uid={item['_id']}" yield Request(url, callback=self.parse_detail, meta={'item': item}) @staticmethod def parse_detail(response): item = response.meta['item'] data = json.loads(response.text)['data'] item['birthday'] = data.get('birthday', '') if 'created_at' not in item: item['created_at'] = data.get('created_at', '') item['desc_text'] = data.get('desc_text', '') item['ip_location'] = data.get('ip_location', '') item['sunshine_credit'] = data.get('sunshine_credit', {}).get('level', '') item['label_desc'] = [label['name'] for label in data.get('label_desc', [])] if 'company' in data: item['company'] = data['company'] if 'education' in data: item['education'] = data['education'] yield item

这里获取某个人的微博账号的ids数值。

python run_spider.py user {'_id': '1669879400', 'avatar_hd': 'https://tvax1.sinaimg.cn/crop.0.0.1080.1080.1024/63885668ly8geyrcrw0zjj20u00u0mz6.jpg?KID=imgbed,tva&Expires=1673868313&ssig=auPKgUtsVl', 'nick_name': 'Dear-迪丽热巴', 'verified': True, 'description': '一只喜欢默默表演的小透明。工作联系[email protected] ', 'followers_count': 78646004, 'friends_count': 270, 'statuses_count': 1521, 'gender': 'f', 'location': '上海', 'mbrank': 8, 'mbtype': 12, 'verified_type': 0, 'verified_reason': '嘉 行传媒签约演员\u3000', 'birthday': '双子座', 'created_at': '2010-07-02 13:19:58', 'desc_text': '嘉行传媒签约演员', 'ip_location': 'IP属地:上海', 'sunshine_credit': '信用极好', 'label_desc': ['V指数 文娱 93.17分', '昨日阅读人数10万+,互动数2.0万', '视频累计播放量19.65亿', '星光公益项目代言人', '超话帖 1115万', '群友 1.8万'], 'company': '嘉行传媒', 'education': {'school': '上海戏剧学院'}, 'crawl_time': 1673857512}用户粉丝列表采集 fan.py

该部分用户抓取用户的粉丝列表,其中需要输入抓取用户的ids号,如果需要抓取多个用户的信息,可以构建一个用户的ids列表,进行遍历处理。

import json from scrapy import Spider from scrapy.http import Request from spiders.comment import parse_user_info class FanSpider(Spider): name = "fan" base_url = 'https://weibo.com/ajax/friendships/friends' def start_requests(self): user_ids = [''] # 这里user_ids可替换成实际待采集的数据 for user_id in user_ids: url = self.base_url + f"?relate=fans&page=1&uid={user_id}&type=fans" yield Request(url, callback=self.parse, meta={'user': user_id, 'page_num': 1}) def parse(self, response, **kwargs): data = json.loads(response.text) for user in data['users']: item = dict() item['follower_id'] = response.meta['user'] item['fan_info'] = parse_user_info(user) item['_id'] = response.meta['user'] + '_' + item['fan_info']['_id'] yield item if data['users']: response.meta['page_num'] += 1 url = self.base_url + f"?relate=fans&page={response.meta['page_num']}&uid={response.meta['user']}&type=fans" yield Request(url, callback=self.parse, meta=response.meta)

抓取的位置是这里的数据。

python run_spider.py fan {'follower_id': '1669879400', 'fan_info': {'_id': '7763204360', 'avatar_hd': 'https://tvax4.sinaimg.cn/crop.0.0.1080.1080.1024/008tnC5yly8h90u5voa82j30u00u0dgm.jpg?KID=imgbed,tva&Expires=1673869145&ssig=wOj7KMNW2G', 'nick_name': '多吃多睡不emo', 'verified': False, 'description': '', 'followers_count': 3, 'friends_count': 27, 'statuses_count': 1, 'gender': 'f', 'location': '其他', 'mbrank': 0, 'mbtype': 0, 'credit_score': 80, 'created_at': '2022-05-21 20:21:03'}, '_id': '1669879400_7763204360', 'crawl_time': 1673858344} 2023-01-16 16:39:04 [scrapy.core.scraper] DEBUG: Scraped from {'follower_id': '1669879400', 'fan_info': {'_id': '7304653135', 'avatar_hd': 'https://tvax2.sinaimg.cn/crop.0.0.720.720.1024/007YlzY3ly8h9cjz9bkjsj30k00k0753.jpg?KID=imgbed,tva&Expires=1673869145&ssig=K11jTawSbR', 'nick_name': '白JT耶', 'verified': False, 'description': '', 'followers_count': 0, 'friends_count': 40, 'statuses_count': 0, 'gender': 'f', 'location': '其他', 'mbrank': 0, 'mbtype': 0, 'credit_score': 80, 'created_at': '2019-09-12 19:08:32'}, '_id': '1669879400_7304653135', 'crawl_time': 1673858344} 2023-01-16 16:39:04 [scrapy.core.scraper] DEBUG: Scraped from {'follower_id': '1669879400', 'fan_info': {'_id': '7815387185', 'avatar_hd': 'https://tvax1.sinaimg.cn/default/images/default_avatar_male_180.gif?KID=imgbed,tva&Expires=1673869145&ssig=tzhEhMjNIx', 'nick_name': '用户7815387185', 'verified': False, 'description': '', 'followers_count': 0, 'friends_count': 7, 'statuses_count': 0, 'gender': 'm', 'location': '其他', 'mbrank': 0, 'mbtype': 0, 'credit_score': 80, 'created_at': '2023-01-16 16:26:35'}, '_id': '1669879400_7815387185', 'crawl_time': 1673858344} 2023-01-16 16:39:04 [scrapy.core.scraper] DEBUG: Scraped from {'follower_id': '1669879400', 'fan_info': {'_id': '7815420753', 'avatar_hd': 'https://tvax1.sinaimg.cn/crop.0.0.1080.1080.1024/008wUHXrly8ha4oy0jselj30u00u0440.jpg?KID=imgbed,tva&Expires=1673869145&ssig=LwPMP8pxbe', 'nick_name': '宥宥609', 'verified': False, 'description': '', 'followers_count': 0, 'friends_count': 26, 'statuses_count': 6, 'gender': 'f', 'location': '台湾', 'mbrank': 0, 'mbtype': 0, 'credit_score': 80, 'created_at': '2023-01-15 22:03:48'}, '_id': '1669879400_7815420753', 'crawl_time': 1673858344} ......用户关注列表采集 follower.py

该部分用户关注用户列表,其中需要输入抓取用户的ids号,如果需要抓取多个用户的信息,可以构建一个用户的ids列表,进行遍历处理。

import json from scrapy import Spider from scrapy.http import Request from spiders.comment import parse_user_info class FollowerSpider(Spider): name = "follower" base_url = 'https://weibo.com/ajax/friendships/friends' def start_requests(self): user_ids = [''] # 这里user_ids可替换成实际待采集的数据 for user_id in user_ids: url = self.base_url + f"?page=1&uid={user_id}" yield Request(url, callback=self.parse, meta={'user': user_id, 'page_num': 1}) def parse(self, response, **kwargs): data = json.loads(response.text) for user in data['users']: item = dict() item['fan_id'] = response.meta['user'] item['follower_info'] = parse_user_info(user) item['_id'] = response.meta['user'] + '_' + item['follower_info']['_id'] yield item if data['users']: response.meta['page_num'] += 1 url = self.base_url + f"?page={response.meta['page_num']}&uid={response.meta['user']}" yield Request(url, callback=self.parse, meta=response.meta)

抓取的位置是这里的数据。

python run_spider.py follow {'fan_id': '1669879400', 'follower_info': {'_id': '5743923782', 'avatar_hd': 'https://tvax1.sinaimg.cn/crop.0.0.180.180.1024/006gIUXYly8h8v43kmgvvj6050050mx202.jpg?KID=imgbed,tva&Expires=1673869573&ssig=kar0vyJ4n4', 'nick_name': '微博会员小秘书', 'verified': True, 'description': '', 'followers_count': 51305156, 'friends_count': 39, 'statuses_count': 185, 'gender': 'f', 'location': '北京', 'mbrank': 8, 'mbtype': 12, 'credit_score': 80, 'created_at': '2015-10-28 13:38:44', 'verified_type': 7, 'verified_reason': '微博会员 客服'}, '_id': '1669879400_5743923782', 'crawl_time': 1673858771} 2023-01-16 16:46:11 [scrapy.core.scraper] DEBUG: Scraped from {'fan_id': '1669879400', 'follower_info': {'_id': '7579562933', 'avatar_hd': 'https://tvax3.sinaimg.cn/crop.0.0.180.180.1024/008gX4z3ly8h8v42qrg3dj30500503yg.jpg?KID=imgbed,tva&Expires=1673869573&ssig=lhu%2Bm4aGOM', 'nick_name': '微博高级会员', 'verified': True, 'description': '', 'followers_count': 505180, 'friends_count': 4, 'statuses_count': 28, 'gender': 'f', 'location': '北京', 'mbrank': 2, 'mbtype': 12, 'credit_score': 80, 'created_at': '2021-03-22 16:50:40', 'verified_type': 7, 'verified_reason': '微博高级会员官方微博'}, '_id': '1669879400_7579562933', 'crawl_time': 1673858771} 2023-01-16 16:46:11 [scrapy.core.scraper] DEBUG: Scraped from {'fan_id': '1669879400', 'follower_info': {'_id': '2715025067', 'avatar_hd': 'https://tvax1.sinaimg.cn/crop.0.0.100.100.1024/002XJY2Tly8h8v3x7bx5rj602s02sdfp02.jpg?KID=imgbed,tva&Expires=1673869573&ssig=Zd30j7YEIt', 'nick_name': '微博会员', 'verified': True, 'description': '唠嗑、吃瓜子、谈理想、聊生活,小会长在微博等你http://vip.weibo.com/', 'followers_count': 99610632, 'friends_count': 439, 'statuses_count': 6698, 'gender': 'f', 'location': '北京 海淀区', 'mbrank': 9, 'mbtype': 12, 'credit_score': 80, 'created_at': '2012-04-12 13:55:51', 'verified_type': 7, 'verified_reason': '微博会员官方微博'}, '_id': '1669879400_2715025067', 'crawl_time': 1673858771} ......用户的微博采集 tweet.py

该部分用户抓取微博转发,其中需要输入抓取用户的ids号,如果需要抓取多个用户的信息,可以构建一个用户的ids列表,进行遍历处理。

import json from scrapy import Spider from scrapy.http import Request from spiders.common import parse_tweet_info, parse_long_tweet class TweetSpider(Spider): name = "tweet_spider" base_url = "https://weibo.cn" def start_requests(self): user_ids = [''] # 这里user_ids可替换成实际待采集的数据 for user_id in user_ids: url = f"https://weibo.com/ajax/statuses/mymblog?uid={user_id}&page=1" yield Request(url, callback=self.parse, meta={'user_id': user_id, 'page_num': 1}) def parse(self, response, **kwargs): data = json.loads(response.text) tweets = data['data']['list'] for tweet in tweets: item = parse_tweet_info(tweet) del item['user'] if item['isLongText']: url = "https://weibo.com/ajax/statuses/longtext?id=" + item['mblogid'] yield Request(url, callback=parse_long_tweet, meta={'item': item}) else: yield item if tweets: user_id, page_num = response.meta['user_id'], response.meta['page_num'] page_num += 1 url = f"https://weibo.com/ajax/statuses/mymblog?uid={user_id}&page={page_num}" yield Request(url, callback=self.parse, meta={'user_id': user_id, 'page_num': page_num})

抓取的位置是这里的数据。

python run_spider.py tweet {'_id': '4854964357434264', 'mblogid': 'Mn3SbvbZu', 'created_at': '2023-01-06 17:26:06', 'geo': None, 'ip_location': '发布于 上海', 'reposts_count': 24825, 'comments_count': 149353, 'attitudes_count': 671342, 'source': '', 'content': '支持超哥《中国乒乓》,大年初一电影院见!', 'pic_urls': [], 'pic_num': 0, 'isLongText': False, 'video': 'http://f.video.weibocdn.com/o0/cSNonTYdlx0828dg5la801041200zAbM0E010.mp4?label=mp4_720p&template=1280x720.25.0&ori=0&ps=1CwnkDw1GXwCQx&Expires=1673862511&ssig=YNp8tXW5fv&KID=unistore,video', 'url': 'https://weibo.com/1669879400/Mn3SbvbZu', 'crawl_time': 1673858923} 2023-01-16 16:48:43 [scrapy.core.scraper] DEBUG: Scraped from {'_id': '4853032289044638', 'mblogid': 'MmfBWBWVg', 'created_at': '2023-01-01 09:28:45', 'geo': None, 'ip_location': '发布于 上海', 'reposts_count': 1000000, 'comments_count': 1000000, 'attitudes_count': 4619408, 'source': '', 'content': '祝大家元旦快乐!新的一年都要平安健康,一起随心舞动吧 ', 'pic_urls': ['https://wx1.sinaimg.cn/orj960/001P0DUIgy1h9nw4y57m3j62w63uwhdz02', 'https://wx1.sinaimg.cn/orj960/001P0DUIgy1h9nw5g2o6gj62w63uwnph02', 'https://wx1.sinaimg.cn/orj960/001P0DUIgy1h9nw66az1rj62w63uwqvb02'], 'pic_num': 3, 'isLongText': False, 'url': 'https://weibo.com/1669879400/MmfBWBWVg', 'crawl_time': 1673858923} ......微博评论采集 comment.py

该部分用户抓取微博评论,其中需要输入抓取用户的ids号,如果需要抓取多个用户的信息,可以构建一个用户的ids列表,进行遍历处理。

import json from scrapy import Spider from scrapy.http import Request from spiders.common import parse_user_info, parse_time, url_to_mid class CommentSpider(Spider): name = "comment" def start_requests(self): tweet_ids = ['Mn3SbvbZu'] # 这里tweet_ids可替换成实际待采集的数据 mblogid 这个 for tweet_id in tweet_ids: mid = url_to_mid(tweet_id) url = f"https://weibo.com/ajax/statuses/buildComments?" \ f"is_reload=1&id={mid}&is_show_bulletin=2&is_mix=0&count=20" yield Request(url, callback=self.parse, meta={'source_url': url}) def parse(self, response, **kwargs): data = json.loads(response.text) for comment_info in data['data']: item = self.parse_comment(comment_info) yield item if data.get('max_id', 0) != 0: url = response.meta['source_url'] + '&max_id=' + str(data['max_id']) yield Request(url, callback=self.parse, meta=response.meta) @staticmethod def parse_comment(data): item = dict() item['created_at'] = parse_time(data['created_at']) item['_id'] = data['id'] item['like_counts'] = data['like_counts'] item['ip_location'] = data['source'] item['content'] = data['text_raw'] item['comment_user'] = parse_user_info(data['user']) return item

抓取的位置是这里的数据。

python run_spider.py comment {'created_at': '2023-01-06 17:29:38', '_id': 4854965250032556, 'like_counts': 39365, 'ip_location': '来自广东', 'content': '年初一见![赢牛奶]', 'comment_user': {'_id': '1787569845', 'avatar_hd': 'https://tvax3.sinaimg.cn/crop.0.0.736.736.1024/6a8c26b5ly8gbr3gxhd10j20kg0kgq3e.jpg?KID=imgbed,tva&Expires=1673870085&ssig=3qdcwNU31l', 'nick_name': '护舒宝', 'verified': True, 'description': '护舒宝品牌,诞生于北美,1983年。1989年推出首款带护翼卫生巾,掀起女性护理产品的换代潮流。2014年消费者口中的”液体卫生巾”进入中国,独创Flexfoam源自液体吸收材料,颠覆传统技术,欢 迎体验无感风潮。', 'followers_count': 565106, 'friends_count': 579, 'statuses_count': 7652, 'gender': 'f', 'location': '北京', 'mbrank': 7, 'mbtype': 12, 'verified_type': 2, 'verified_reason': '护舒宝官方微博'}, 'crawl_time': 1673859284} 2023-01-16 16:54:44 [scrapy.core.scraper] DEBUG: Scraped from {'created_at': '2023-01-06 17:26:14', '_id': 4854964393869632, 'like_counts': 28949, 'ip_location': '来自山西', 'content': '明明是我的心,为什么装的全是你?[舔屏][舔屏][舔屏]', 'comment_user': {'_id': '5626258020', 'avatar_hd': 'https://tvax1.sinaimg.cn/crop.0.0.1080.1080.1024/0068LcJ6ly8ha2e9qbyyhj30u00u0acu.jpg?KID=imgbed,tva&Expires=1673870085&ssig=rT0TU4MFad', 'nick_name': '麻豆还在热巴怀里吐奶嘛', 'verified': True, 'description': '那就说好喽,彩虹袖 就是我们的约定!去见你的我一定是幸运的小彩虹!', 'followers_count': 15065, 'friends_count': 257, 'statuses_count': 4378, 'gender': 'f', 'location': '上海', 'mbrank': 6, 'mbtype': 12, 'verified_type': 0, 'verified_reason': '娱乐博主 超话粉丝大咖(迪丽热巴超话) 微博剪辑视频博主'}, 'crawl_time': 1673859284} ......微博转发采集 repost.py

该部分用户抓取微博转发,其中需要输入抓取用户的ids号,如果需要抓取多个用户的信息,可以构建一个用户的ids列表,进行遍历处理。

抓取的位置是这里的数据。

python run_spider.py repost {'_id': '4828973047220541', 'mblogid': 'Mc9IIuiol', 'created_at': '2022-10-27 00:05:55', 'geo': None, 'ip_location': '发布于 江西', 'reposts_count': 0, 'comments_count': 0, 'attitudes_count': 0, 'source': 'Redmi K40', 'content': '//@陈坤:#山下学堂五周年# 五年, 感谢同行。', 'pic_urls': [], 'pic_num': 0, 'isLongText': False, 'user': {'_id': '6288659346', 'avatar_hd': 'https://tvax1.sinaimg.cn/crop.0.0.1002.1002.1024/006RAzzsly8guk6foj95xj60ru0ruabn02.jpg?KID=imgbed,tva&Expires=1673869818&ssig=jQeUzB06SA', 'nick_name': '想笑的周三哈', 'verified': True, 'mbrank': 5, 'mbtype': 2, 'verified_type': 0}, 'url': 'https://weibo.com/6288659346/Mc9IIuiol', 'crawl_time': 1673859016} 2023-01-16 16:50:16 [scrapy.core.scraper] DEBUG: Scraped from {'_id': '4827688026509067', 'mblogid': 'MbCi6rjiX', 'created_at': '2022-10-23 10:59:42', 'geo': None, 'ip_location': '发布于 辽宁', 'reposts_count': 0, 'comments_count': 0, 'attitudes_count': 0, 'source': '华为畅享10 Plus', 'content': '//@陈坤:#山下学堂五周年# 五年, 感谢同行。', 'pic_urls': [], 'pic_num': 0, 'isLongText': False, 'user': {'_id': '7469662028', 'avatar_hd': 'https://tvax1.sinaimg.cn/default/images/default_avatar_female_180.gif?KID=imgbed,tva&Expires=1673869818&ssig=qbEqJVcF3I', 'nick_name': '用户7469662028', 'verified': False, 'mbrank': 0, 'mbtype': 0}, 'url': 'https://weibo.com/7469662028/MbCi6rjiX', 'crawl_time': 1673859016} ......基于关键词的微博检索 search.py

根据关键词以及对应的时间构建url去获取需要的数据。

import json import re from scrapy import Spider, Request from spiders.common import parse_tweet_info, parse_long_tweet class SearchSpider(Spider): name = "search_spider" base_url = "https://s.weibo.com/" def start_requests(self): """ 爬虫入口 """ # 这里keywords可替换成实际待采集的数据 keywords = ['迪丽热巴'] time_list = [ ["2021-01-01-0", "2021-01-01-23"], ["2021-01-02-0", "2021-01-02-23"], ["2021-01-03-0", "2021-01-03-23"], ] start_time = "2021-12-01-0" # 格式为 年-月-日-小时, 2021-10-01-0 表示2022年10月1日0时 end_time = "2021-12-10-23" # 格式为 年-月-日-小时, 2021-10-07-23 表示2022年10月7日23时 is_search_with_specific_time_scope = True # 是否在指定的时间区间进行推文搜索 is_sort_by_hot = False # 是否按照热度排序,默认按照时间排序 for i in time_list: for keyword in keywords: if is_search_with_specific_time_scope: url = f"https://s.weibo.com/weibo?q={keyword}×cope=custom%3A{i[0]}%3A{i[1]}&page=1" else: url = f"https://s.weibo.com/weibo?q={keyword}&page=1" if is_sort_by_hot: url += "&xsort=hot" yield Request(url, callback=self.parse, meta={'keyword': keyword}) def parse(self, response, **kwargs): html = response.text tweet_ids = re.findall(r'\d+/(.*?)\?refer_flag=1001030103_" ', html) for tweet_id in tweet_ids: url = f"https://weibo.com/ajax/statuses/show?id={tweet_id}" yield Request(url, callback=self.parse_tweet, meta=response.meta) next_page = re.search('下一页', html) if next_page: url = "https://s.weibo.com" + next_page.group(1) yield Request(url, callback=self.parse, meta=response.meta) @staticmethod def parse_tweet(response): data = json.loads(response.text) item = parse_tweet_info(data) item['keyword'] = response.meta['keyword'] if item['isLongText']: url = "https://weibo.com/ajax/statuses/longtext?id=" + item['mblogid'] yield Request(url, callback=parse_long_tweet, meta={'item': item}) else: yield item

抓取的位置是这里的数据。

python run_spider.py search {'_id': '4588371504009981', 'mblogid': 'JB4WGgPb7', 'created_at': '2021-01-01 01:41:17', 'geo': None, 'ip_location': None, 'reposts_count': 0, 'comments_count': 0, 'attitudes_count': 2, 'source': 'iPhone', 'content': '我:哈哈哈哈这批跟朋友圈里说自己要发nature\nczz:发特么csdn吧 ', 'pic_urls': [], 'pic_num': 0, 'isLongText': False, 'user': {'_id': '3177107030', 'avatar_hd': 'https://tvax1.sinaimg.cn/crop.94.0.311.311.1024/003t0OFMly1grsbxvnq3xj60dv08nq5a02.jpg?KID=imgbed,tva&Expires=1673870247&ssig=ToZeOGf9Tq', 'nick_name': '波兰瑞典', 'verified': False, 'mbrank': 0, 'mbtype': 0}, 'url': 'https://weibo.com/3177107030/JB4WGgPb7', 'keyword': 'CSDN', 'crawl_time': 1673859445} 2023-01-16 16:57:25 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://weibo.com/ajax/statuses/show?id=JB4SX0gQ1) 2023-01-16 16:57:25 [scrapy.core.scraper] DEBUG: Scraped from {'_id': '4588369190064729', 'mblogid': 'JB4SX0gQ1', 'created_at': '2021-01-01 01:32:05', 'geo': None, 'ip_location': None, 'reposts_count': 0, 'comments_count': 0, 'attitudes_count': 1, 'source': 'iPhone客户端', 'content': '过去一年最大的成就就是把酒戒了,然后老毛病还是没有改掉。重新开始背单词,努力学django.戒焦虑,戒烦躁。关闭朋友圈和限制抖音时间,注册一个csdn账户分享我学到 的技术,多读书,从国内带来的书要读完。希望我能在美国找到一个工作,找到女朋友并谈一场恋爱。祝愿时间过得慢一点,时光别去叨扰父母。平安喜乐,努力过好接下来的每一天', 'pic_urls': [], 'pic_num': 0, 'isLongText': True, 'user': {'_id': '5337323194', 'avatar_hd': 'https://tvax3.sinaimg.cn/crop.0.0.1080.1080.1024/005PcRzYly8gijw6p00acj30u00u0jup.jpg?KID=imgbed,tva&Expires=1673870245&ssig=O728VsDHR4', 'nick_name': '无良梦中人', 'verified': False, 'mbrank': 1, 'mbtype': 2}, 'url': 'https://weibo.com/5337323194/JB4SX0gQ1', 'keyword': 'CSDN', 'crawl_time': 1673859445} 2023-01-16 16:57:26 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://s.weibo.com/weibo?q=CSDN×cope=custom%3A2021-01-01-0%3A2021-01-01-23&page=1) ......数据保存

数据默认方式都是保存成 jsonl 格式,直接使用json的方法进行数据处理操作即可。

如果需要修改数据保存的形式,可以自行修改 pipelines.py 中的 class 类即可,也不要忘记最后在 settings.py 中修改 ITEM_PIPELINES 参数。

根据实际的数据存储的位置进行方法的编写。

ITEM_PIPELINES = { 'pipelines.JsonWriterPipeline': 300, 'pipelines.MongoDBWriterPipeline': 400, ....... }



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有