scrapy 搜索关键字_Scrapy 新浪微博搜索爬虫

使用Scrapy框架,结合微博高级搜索接口,爬取指定日期范围内包含特定关键词(如高考)的微博数据。通过构造每日URL,实现对微博内容和用户信息的抓取,以获取大量相关微博及用户数据。
摘要由CSDN通过智能技术生成

微博高级搜索

可能你经常有这样的需要,比如最近有热度的事件兴起,你要抓取几月几号到几月几号这段时间,提及到某个关键词的微博。

这其实是一个非常刚性的需求,这就要采用微博的高级搜索来完成了。

本文采用 微博站点

高级搜索接口:

https://weibo.cn/search/mblog?advanced=mblog&f=s

注意这里的时间是以天为单位,如果输入关键词“高考”,试着分别输入20190601至20190602、20190601至20190620,结果返回的都是100页,每页10个,也就是1000条结果。如果想爬取更丰富的数据,肯定是要构造每一个相差一天,一直到截止日期的url集合

import scrapy

from scrapy import Request

from ..items import *

import datetime

import re

class WeiboSpiderSpider(scrapy.Spider):

name = 'weibo_spider'

allowed_domains = ['weibo.cn']

# start_urls = ['http://weibo.cn/']

base_url = "https://weibo.cn"

def start_requests(self):

url_format = "https://weibo.cn/search/mblog?hideSearchFrame=&keyword={}&advancedfilter=1&starttime={}&endtime={}&sort=time"

# 搜索的关键词,可以修改

# keyword = "阴阳师"

keyword = "高考"

# 搜索的起始日期,自行修改 微博的创建日期是2009-08-16 也就是说不要采用这个日期更前面的日期了

date_start = datetime.datetime.strptime("2019-05-20", '%Y-%m-%d')

# 搜索的结束日期,自行修改

date_end = datetime.datetime.strptime("2019-06-20", '%Y-%m-%d')

time_spread = datetime.timedelta(days=1)

while date_start < date_end:

next_time = date_start + time_spread

url = url_format.format(keyword, date_start.strftime("%Y%m%d"), next_time.strftime("%Y%m%d"))

date_start = next_time

yield Request(url, callback=self.parse_tweet, dont_filter=True)

例如这样我们爬取 2019-05-20 至 2019-06-20 这一个月关键词“高考”的微博,构造url,从起始日期每天+1天,一天是10*100=1000条结果,一共是这一个月之间的天数*1000条结果。

然后就可以爬取微博数据和发该微博的用户信息。

小白的学习笔记...

emmmm...

后来,抓取了近3个月,关键词为“阴阳师”的微博近80000条,用户50000多个,男女比例1.8:1

根据微博内容生成词云 (词云的Github源码:Ingram7/Mywordcloud)

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值