1. 引言

利用scrapy框架爬取微博热搜榜网站前50条热搜。

爬取信息:热搜排名、热搜新闻名、热搜新闻热搜量。

数据存储:存储为.csv文件。

2.爬取流程

  • 新建scrapy爬虫项目:
    在终端输入以下代码,创建一个基于scrapy框架的爬虫项目,该项目为:weiboreshou。
scrapy startproject weiboreshou

  • 在weiboreshou项目下新建爬虫程序文件
    在终端输入以下代码,创建一个名为reshou的爬虫程序文件。
cd weigoreshou
scrapy genspider reshou s.weibo.com

新建的项目包含以下文件:


  • 编写items.py文件,定义需要获取的信息字段。
# Define here the models for your scraped items
#
# See documentation in:
# https://docs.scrapy.org/en/latest/topics/items.htmlimport scrapyclass WeiboreshouItem(scrapy.Item):order = scrapy.Field() #热搜排名news = scrapy.Field() #热搜新闻number = scrapy.Field() #热搜量# define the fields for your item here like:# name = scrapy.Field()#pass
  • 编写settings.py程序,进行项目的一些设置
# Scrapy settings for weiboreshou project
#
# For simplicity, this file contains only settings considered important or
# commonly used. You can find more settings consulting the documentation:
#
#     https://docs.scrapy.org/en/latest/topics/settings.html
#     https://docs.scrapy.org/en/latest/topics/downloader-middleware.html
#     https://docs.scrapy.org/en/latest/topics/spider-middleware.htmlBOT_NAME = 'weiboreshou'SPIDER_MODULES = ['weiboreshou.spiders']
NEWSPIDER_MODULE = 'weiboreshou.spiders'# Crawl responsibly by identifying yourself (and your website) on the user-agent
#USER_AGENT = 'weiboreshou (+http://www.yourdomain.com)'# Obey robots.txt rules
ROBOTSTXT_OBEY = False #设置为不遵守ROBOTSTXT协议# Configure maximum concurrent requests performed by Scrapy (default: 16)
#CONCURRENT_REQUESTS = 32# Configure a delay for requests for the same website (default: 0)
# See https://docs.scrapy.org/en/latest/topics/settings.html#download-delay
# See also autothrottle settings and docs
DOWNLOAD_DELAY = 3 #设置下载延迟时间为3秒
# The download delay setting will honor only one of:
#CONCURRENT_REQUESTS_PER_DOMAIN = 16
#CONCURRENT_REQUESTS_PER_IP = 16# Disable cookies (enabled by default)
#COOKIES_ENABLED = False# Disable Telnet Console (enabled by default)
#TELNETCONSOLE_ENABLED = False# Override the default request headers:
DEFAULT_REQUEST_HEADERS = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Language': 'en','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 Edg/92.0.902.73'
}# Enable or disable spider middlewares
# See https://docs.scrapy.org/en/latest/topics/spider-middleware.html
#SPIDER_MIDDLEWARES = {#    'weiboreshou.middlewares.WeiboreshouSpiderMiddleware': 543,
#}# Enable or disable downloader middlewares
# See https://docs.scrapy.org/en/latest/topics/downloader-middleware.html
#DOWNLOADER_MIDDLEWARES = {#    'weiboreshou.middlewares.WeiboreshouDownloaderMiddleware': 543,
#}# Enable or disable extensions
# See https://docs.scrapy.org/en/latest/topics/extensions.html
#EXTENSIONS = {#    'scrapy.extensions.telnet.TelnetConsole': None,
#}# Configure item pipelines
# See https://docs.scrapy.org/en/latest/topics/item-pipeline.html
#ITEM_PIPELINES = {#    'weiboreshou.pipelines.WeiboreshouPipeline': 300,
#}# Enable and configure the AutoThrottle extension (disabled by default)
# See https://docs.scrapy.org/en/latest/topics/autothrottle.html
#AUTOTHROTTLE_ENABLED = True
# The initial download delay
#AUTOTHROTTLE_START_DELAY = 5
# The maximum download delay to be set in case of high latencies
#AUTOTHROTTLE_MAX_DELAY = 60
# The average number of requests Scrapy should be sending in parallel to
# each remote server
#AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0
# Enable showing throttling stats for every response received:
#AUTOTHROTTLE_DEBUG = False# Enable and configure HTTP caching (disabled by default)
# See https://docs.scrapy.org/en/latest/topics/downloader-middleware.html#httpcache-middleware-settings
#HTTPCACHE_ENABLED = True
#HTTPCACHE_EXPIRATION_SECS = 0
#HTTPCACHE_DIR = 'httpcache'
#HTTPCACHE_IGNORE_HTTP_CODES = []
#HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage'
  • 编写reshou.py文件,爬取网站信息
    利用CSS选择器定位所需信息的位置,解析HTML源码。
import scrapy
from ..items import WeiboreshouItemclass ReshouSpider(scrapy.Spider):name = 'reshou'allowed_domains = ['s.weibo.com']start_urls = ['https://s.weibo.com/top/summary']def parse(self, response):list_selector = response.css('tbody tr')for one_selector in list_selector:order = one_selector.css(' td.ranktop::text').extract()news = one_selector.css(' a::text').extract()number = one_selector.css(' span::text').extract()item = WeiboreshouItem()item['order'] = orderitem['news'] = newsitem['number'] = numberyield item#pass
  • 在终端输入以下程序,进行数据爬取
scrapy crawl reshou -o reshou.csv

3.查看输出数据

写在最后

关于scrapy框架,大家可以参考以下文章:

功能强大的python包(八):Scrapy (网络爬虫框架)

该项目的环境配置可以参考以下文章:

开发环境配置

爬虫—爬取微博热搜榜相关推荐

  1. 从零到一学爬虫-爬取微博热搜示例

    爬取微博热搜榜-简单示例 使用爬虫模拟浏览器向微博热搜的服务器发送请求,得到响应,然后将响应的信息进行打印. 当我们直接打开浏览器,输入https://s.weibo.com/top/summary, ...

  2. python爬取微博热搜榜

    python爬取微博热搜榜 最近应我大学室友得需求,做了一个简单的爬虫案例,先给大家看一下程序运行效果 接下来就是贴出代码了,在这里我会做一些简单说明,对如刚入门的同学可能会有所帮助,这里使用的是py ...

  3. Python爬取微博热搜榜,将数据存入数据库

    一直想学习用Python来进行数据的爬取,也一直想知道Python连接数据库的操作,今天刚好看到的这篇文章满足了这两个条件,我试着爬了下微博,并成功将数据添加到数据库中,颇为欢喜.作者写的很简单,有些 ...

  4. c#使用正则表达式获取TR中的多个TD_使用python+BeautifulSoup爬取微博热搜榜

    本文将介绍基于Python使用BeautifulSoup爬取微博热搜榜的实现过程 1.首先导入需要使用的库 from bs4 import BeautifulSoup from urllib.requ ...

  5. 爬虫实例:正则表达式爬取微博热搜榜

    最近在学习python的爬虫知识,分享一个爬取微博热搜的实例,代码很简单. 用到了requests,re,xlwt库 直接看图: #1导入模块 import requests import re im ...

  6. python爬取微博热搜榜教程,python爬取微博热搜并存入表格

    微博热搜的爬取较为简单,我只是用了lxml和requests两个库 url= https://s.weibo.com/top/summary?Refer=top_hot&topnav=1&am ...

  7. Python 超简单爬取微博热搜榜数据

    微博的热搜榜对于研究大众的流量有非常大的价值.今天的教程就来说说如何爬取微博的热搜榜. 热搜榜的链接是: https://s.weibo.com/top/summary/ 用浏览器浏览,发现在不登录的 ...

  8. 使用 Nodejs 实现定时爬取微博热搜榜

    The summer is coming " 我知道,那些夏天,就像青春一样回不来.- 宋冬野 青春是回不来了,倒是要准备渡过在西安的第三个夏天了. 看完本文的收获 ctrl + c ctr ...

  9. Python爬虫爬取微博热搜保存为 Markdown 文件

    微博热搜榜python爬虫,仅供学习交流 源码及注释: # -*- coding=UTF-8 -*- #!usr/bin/env pythonimport os import time import ...

最新文章

  1. 正则严格验证身份证信息
  2. MSSQL2000+asp.net+论坛安装过程
  3. Openstack Nova 源码分析 — RPC 远程调用过程
  4. 英语语法---短语总结
  5. Linux Shell获取系统资源使用百分比(CentOS)
  6. 高并发下秒杀商品,必须知道的9个细节
  7. java同步方法同步块_java使用同步方法和同步块的区别
  8. 计算机网络 第一章 计算机网络和因特网
  9. TFS报表管理器无权限访问的配置
  10. CEGUI中文显示四步曲
  11. Horizon client连接windows桌面显示:USB设备已禁用/USB重定向功能已禁用
  12. 泛微平台ecology8.0二进制文件流下载对接接口
  13. 香港拼音-汉字对照表
  14. Python全栈最全学习之路-Python基础(十一)
  15. JAVA-GetDay
  16. pytorch报错“RuntimeError: DataLoader worker (pid 83709) is killed by signal: Bus error. It is .......“
  17. 自己做一个table插件 (一)Ajax获取数据后动态生成table
  18. Lua 之 Lua Window 上的开发环境 SciTE 的安装,并运行第一个 Hello Lua
  19. 在ROS下控制dobot(magician)机械手的滑轨
  20. 一点点对WebResource.axd的配置及使用[原创]

热门文章

  1. docker 学习记录1
  2. Mapbox Android学习笔记(8)离线地图
  3. RGB-IR CFA Optimizations
  4. 64匹马,8个赛道,找出跑得最快的4匹马
  5. #Python #2022卡塔尔世界杯 #FIFA World Cup Qatar 2022 # 机器学习 #数据分析 用Python预测世界杯决赛
  6. UserWarning: Possibly corrupt EXIF data.
  7. 本周票房大盘 API数据接口
  8. AI|优必选称准备IPO 此前公司机器人曾登上春晚舞台
  9. 金亚科技董事长 周旭辉 访谈录
  10. 博客插入GIF动图技巧