五行代码爬取数据

这篇博客记录了使用Python进行简单网页数据爬取的过程,主要涉及requests和re模块。通过五个步骤,包括下载requests模块、获取网页访问方式、筛选目标数据,成功爬取并打印了b站首页视频标题。

Python-最简单的爬虫

主要是怕自己忘了,记一下笔记。

  1. 需要一个requests模块,第一步下载模块
pip intall requests
  1. 在爬取数据的时候需要用到正则表达式,所以除了引用requests以外,还得引用re
import requests
import re
  1. 第一步,找到想要爬取网页的访问方式。在google开发者工具里的Network里的可以找到在这里插入图片描述
    用 requests.访问方式(‘url’)的方式进入网页,比如我想爬取的网址是b站
html = requests.get('https://www.bilibili.com/').text

可以print一下,看一下是否获取

<think>好的,我现在需要帮助用户解决如何用Python编写爬虫程序来抓取《雾山五行》的相关评论。首先,用户提到了参考的引用[1],里面提到使用B站来爬取数据,所以应该使用B站的API。 接下来,我需要回忆B站的评论接口。通常,B站的评论接口可以通过视频的oid来获取,而oid可以通过视频的AV号或BV号来查询。现在B站主要使用BV号,所以可能需要先将BV号转换为oid。或者,可能现在的API已经可以直接通过BV号获取评论。需要确认这一点。 然后,用户需要完整的代码,所以需要考虑如何构造请求,处理分页,解析JSON数据。可能需要使用requests库发送HTTP请求,然后用json解析返回的数据。评论可能分页,所以需要循环请求直到没有更多数据。 此外,B站的API可能有反爬机制,比如需要添加headers,比如User-Agent和Referer,否则可能会被拒绝访问。所以在代码中需要设置合适的请求头。 步骤大概是这样的: 1. 获取视频的oid(如果必要的话) 2. 构建评论请求的URL,包括oid和分页参数(pn表示页码) 3. 发送GET请求,获取JSON数据 4. 解析JSON,提取评论内容、用户信息、时间等 5. 处理分页,循环直到获取所有评论 6. 存储数据,比如保存到CSV文件 现在需要确认具体的API接口。根据之前的经验,B站的评论API是https://api.bilibili.com/x/v2/reply?jsonp=json&type=1&oid={oid}&pn={pn},其中type=1表示视频类型,oid是视频的id,pn是页码。所以首先需要获取视频的oid。 例如,用户提供的引用[1]中可能没有给出具体的视频BV号,所以需要用户提供,或者在代码中示例一个。例如,假设《雾山五行》的一个视频BV号为BV1qK411n7gQ,但需要用户确认。或者,可能需要先通过搜索接口获取视频的oid,但这可能更复杂。为了简化,可能需要用户手动输入BV号,然后通过另一个API获取oid。 不过,现在B站的部分API可能已经可以直接使用BV号来获取oid。例如,通过https://api.bilibili.com/x/web-interface/view?bvid={BV号},可以获取视频的详细信息,包括oid(即aid)。 因此,代码的大致流程是: - 输入BV号 - 请求视频信息接口获取oid - 使用oid请求评论接口,分页获取评论 - 解析并保存评论 接下来,需要考虑代码的实现细节,比如异常处理、反爬策略(如设置延迟),以及数据存储。此外,B站的API可能有访问频率限制,所以需要适当控制请求速度,避免被封IP。 另外,用户可能需要示例代码,所以在回答中需要给出具体的Python代码,包含上述步骤。需要确保代码使用requests库,处理JSON数据,并保存到CSV。 最后,需要提醒用户遵守网站的规定,合理使用爬虫,避免过度请求。</think>### 爬取B站《雾山五行》评论的Python实现 #### 核心步骤说明 1. **获取视频oid** 通过B站视频的`BV号`调用接口`https://api.bilibili.com/x/web-interface/view?bvid={bvid}`获取视频唯一标识`oid`[^1]。 2. **构建评论请求** 使用`oid`和分页参数`pn`访问评论接口: ```python comment_url = f"https://api.bilibili.com/x/v2/reply?jsonp=json&type=1&oid={oid}&pn={page}" ``` 3. **解析JSON数据** 提取评论内容、用户昵称、点赞数、时间戳等字段。 #### 完整代码实现 ```python import requests import csv import time def get_oid(bvid): url = f"https://api.bilibili.com/x/web-interface/view?bvid={bvid}" 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", "Referer": "https://www.bilibili.com/" } response = requests.get(url, headers=headers).json() return response['data']['aid'] def get_comments(oid, max_page=5): comments = [] for page in range(1, max_page + 1): url = f"https://api.bilibili.com/x/v2/reply?jsonp=json&type=1&oid={oid}&pn={page}" 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", "Referer": f"https://www.bilibili.com/video/{bvid}" } response = requests.get(url, headers=headers).json() if response['data']['replies']: for reply in response['data']['replies']: comment = { "user": reply['member']['uname'], "content": reply['content']['message'], "like": reply['like'], "time": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(reply['ctime'])) } comments.append(comment) time.sleep(1) # 防止请求过快 return comments def save_to_csv(comments): with open('wushan_comments.csv', 'w', newline='', encoding='utf-8-sig') as f: writer = csv.DictWriter(f, fieldnames=['user', 'content', 'like', 'time']) writer.writeheader() writer.writerows(comments) if __name__ == "__main__": bvid = "BV1qK411n7gQ" # 替换实际BV号 oid = get_oid(bvid) comments = get_comments(oid, max_page=10) # 爬取前10页 save_to_csv(comments) print(f"已保存{len(comments)}条评论到wushan_comments.csv") ``` #### 关键参数说明 - **User-Agent**:模拟浏览器访问,绕过基础反爬 - **Referer**:声明请求来源,B站接口的必要验证[^1] - **分页控制**:`max_page`参数限制采集页数,避免触发反爬 - **延时策略**:`time.sleep(1)`降低请求频率
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值