【爬虫实战】python微博热搜榜Top50

一.最终效果

二.项目代码

2.1 新建项目

本文使用scrapy分布式、多线程爬虫框架编写的高性能爬虫,因此新建、运行scrapy项目3步骤:

1.新建项目:
scrapy startproject weibo_hot

2.新建 spider:
scrapy genspider hot_search "weibo.com"

3.运行 spider:
scrapy crawl hot_search

注意:hot_search 是spider中的name

4.编写item:

py 复制代码
class WeiboHotItem(scrapy.Item):

    index = scrapy.Field()
    topic_flag = scrapy.Field()
    icon_desc_color = scrapy.Field()
    small_icon_desc = scrapy.Field()
    small_icon_desc_color = scrapy.Field()
    is_hot = scrapy.Field()
    is_gov = scrapy.Field()
    note = scrapy.Field()
    mid = scrapy.Field()
    url = scrapy.Field()
    flag = scrapy.Field()
    name = scrapy.Field()
    word = scrapy.Field()
    pos = scrapy.Field()
    icon_desc = scrapy.Field()

5.编写爬虫解析代码:

python 复制代码
import os
from itemadapter import ItemAdapter
from .settings import DATA_URI
from .Utils import Tool

tool = Tool()


class WeiboHotPipeline:

    def open_spider(self, spider):

        self.hot_line = "index,mid,word,label_name,raw_hot,category,onboard_time\n"

        data_dir = os.path.join(DATA_URI)
        file_path = data_dir + '/hot.csv'
        #判断文件夹存放的位置是否存在,不存在则新建文件夹
        if os.path.isfile(file_path):
            self.data_file = open(file_path, 'a', encoding='utf-8')
        else:
            if not os.path.exists(data_dir):
                os.makedirs(data_dir)
            self.data_file = open(file_path, 'a', encoding='utf-8')
            self.data_file.write(self.hot_line)

    def close_spider(self, spider):  # 在关闭一个spider的时候自动运行
        self.data_file.close()

    def process_item(self, item, spider):
        try:

            hot_line = '{},{},{},{},{},{},{}\n'.format(
                item.get('index', ''),
                item.get('mid', ''),
                item.get('word', ''),
                item.get('label_name', ''),
                item.get('raw_hot', ''),
                tool.translate_chars(item.get('category', '')),
                tool.get_format_time(item.get('onboard_time', '')),
            )
            self.data_file.write(hot_line)
        except BaseException as e:
            print("hot错误在这里>>>>>>>>>>>>>", e, "<<<<<<<<<<<<<错误在这里")
        return item

三.注意事项

settings.py配置项修改

python 复制代码
# Obey robots.txt rules
ROBOTSTXT_OBEY = False # 关闭,否则根据weibo的爬虫策略爬虫无法获取数据

如果

四.运行过程

五.项目说明文档

六.获取完整源码

爱学习的小伙伴,本次案例的完整源码,已上传微信公众号"一个努力奔跑的snail ",后台回复 热搜榜 即可获取。

相关推荐
m0_662577975 分钟前
自动化与脚本
jvm·数据库·python
telllong16 分钟前
消息总线设计:asyncio.Queue实战
python·架构设计·asyncio
伏 念41 分钟前
大模型技术之LLM
人工智能·笔记·python·aigc
dapeng28701 小时前
使用Fabric自动化你的部署流程
jvm·数据库·python
站大爷IP1 小时前
使用 Python 实现 Word 文档文本格式化全解析
python
AI-小柒1 小时前
DataEyes 聚合平台 + Claude Code Max 编程实战
android·开发语言·人工智能·windows·python·macos·adb
SUBMAIL赛邮云通信1 小时前
如何用Python调用SUBMAIL SMS API发送国际短信
python
2401_874732531 小时前
构建一个桌面版的天气预报应用
jvm·数据库·python
qq_417695052 小时前
实战:用Python开发一个简单的区块链
jvm·数据库·python
我的xiaodoujiao2 小时前
3、API 接口自动化测试详细图文教程学习系列3--相关Python基础知识2
python·学习·测试工具·pytest