scrapy 搜索关键字_Scrapy 新浪微博搜索爬虫
微博高級搜索
可能你經(jīng)常有這樣的需要,比如最近有熱度的事件興起,你要抓取幾月幾號到幾月幾號這段時間,提及到某個關(guān)鍵詞的微博。
這其實是一個非常剛性的需求,這就要采用微博的高級搜索來完成了。
本文采用 微博站點
高級搜索接口:
https://weibo.cn/search/mblog?advanced=mblog&f=s
注意這里的時間是以天為單位,如果輸入關(guān)鍵詞“高考”,試著分別輸入20190601至20190602、20190601至20190620,結(jié)果返回的都是100頁,每頁10個,也就是1000條結(jié)果。如果想爬取更豐富的數(shù)據(jù),肯定是要構(gòu)造每一個相差一天,一直到截止日期的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"
# 搜索的關(guān)鍵詞,可以修改
# keyword = "陰陽師"
keyword = "高考"
# 搜索的起始日期,自行修改 微博的創(chuàng)建日期是2009-08-16 也就是說不要采用這個日期更前面的日期了
date_start = datetime.datetime.strptime("2019-05-20", '%Y-%m-%d')
# 搜索的結(jié)束日期,自行修改
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 這一個月關(guān)鍵詞“高考”的微博,構(gòu)造url,從起始日期每天+1天,一天是10*100=1000條結(jié)果,一共是這一個月之間的天數(shù)*1000條結(jié)果。
然后就可以爬取微博數(shù)據(jù)和發(fā)該微博的用戶信息。
小白的學習筆記...
emmmm...
后來,抓取了近3個月,關(guān)鍵詞為“陰陽師”的微博近80000條,用戶50000多個,男女比例1.8:1
根據(jù)微博內(nèi)容生成詞云 (詞云的Github源碼:Ingram7/Mywordcloud)
總結(jié)
以上是生活随笔為你收集整理的scrapy 搜索关键字_Scrapy 新浪微博搜索爬虫的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 快手极速版摇一摇广告怎么关闭
- 下一篇: 不同主体公众号跳转小程序_公众号和小程序