如何屏蔽知乎网页中的热搜

如果你是 chrome浏览器,建议安装 chrome 插件 Block Site

 

知乎热榜的网址为  https://www.zhihu.com/hot 里面有一个关键词 hot,

所以可以在Block site插件中 添加 按单词拦截  添加 hot 进去

下次,当你想浏览热榜内容的时候,也访问不了。

 

 

### 爬取榜数据的实现方法 在 Python 中,可以通过 `requests` 库发送 HTTP 请求获取网页内容,并结合 XPath 或正则表达式解析 HTML 数据。为了确保爬虫高效运行并避免被反爬虫机制阻止,可以引入布隆过滤器和哈希算法进行判重[^1]。 以下是一个完整的实现方案,包括请求发送、HTML 解析以及存储结果到 MySQL 的过程: #### 1. 发送请求 使用 `requests` 库模拟浏览器行为,向榜页面发起 GET 请求。需要注意的是,乎可能对请求头有要求,因此需要设置合适的 User-Agent。 ```python import requests headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" } response = requests.get("https://www.zhihu.com/billboard", headers=headers) html_content = response.text ``` #### 2. 解析 HTML 内容 利用 `lxml` 库中的 XPath 方法提取榜的数据。假设每个条目包含标题和度值,可以根据 HTML 结构编写相应的 XPath 表达式。 ```python from lxml import etree # 将 HTML 转换为 ElementTree 对象 tree = etree.HTML(html_content) # 提取标题和度 hot_list = tree.xpath("//div[@class='HotList-item']") # 假设这是项的父节点 data = [] for item in hot_list: title = item.xpath(".//a/text()")[0].strip() # 提取标题 heat = item.xpath(".//div[@class='HotList-itemMetrics']/text()")[0].strip() # 提取度 data.append({"title": title, "heat": heat}) ``` #### 3. 数据存储 将爬取到的数据存储到 MySQL 数据库中。首先需要建立数据库连接,然后插入数据。 ```python import pymysql # 创建数据库连接 connection = pymysql.connect( host="localhost", user="root", password="your_password", database="zhihu_hot", charset="utf8mb4" ) try: with connection.cursor() as cursor: # 创建表(如果不存在) create_table_sql = """ CREATE TABLE IF NOT EXISTS hot_list ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255), heat VARCHAR(50) ) """ cursor.execute(create_table_sql) # 插入数据 for entry in data: insert_sql = "INSERT INTO hot_list (title, heat) VALUES (%s, %s)" cursor.execute(insert_sql, (entry["title"], entry["heat"])) connection.commit() finally: connection.close() ``` #### 4. 反爬虫策略 为了避免频繁访问导致 IP 被封禁,可以在每次请求之间添加随机延时,并使用代理池轮换 IP 地址。 ```python import time import random def random_delay(): time.sleep(random.uniform(1, 3)) # 随机等待 1 到 3 秒 ``` 调用 `random_delay()` 函数以降低请求频率。 --- ### 注意事项 - **布隆过滤器**:用于去重已爬取的 URL,减少重复抓取。可以借助 `pybloom_live` 库实现。 - **哈希算法**:如 `murmurhash`,可用于生成唯一标识符,辅助布隆过滤器工作。 - **合法性**:确保遵守目标网站的 robots.txt 文件规定,尊重其爬虫政策。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值