本攻略将介绍如何使用Python采集热搜数据,以及如何将数据保存到本地文件中。我们将使用requests库来发送HTTP请求,使用BeautifulSoup库来解析HTML页面,以及使用pandas库来处理数据。
实现Python采集热搜数据
以下是一个示例代码,用于实现Python采集热搜数据:
import requests
from bs4 import BeautifulSoup
import pandas as pd
# 发送HTTP请求
url = 'https://s.weibo.com/top/summary?cate=realtimehot'
response = requests.get(url)
# 解析HTML页面
soup = BeautifulSoup(response.text, 'html.parser')
table = soup.find('table')
# 处理数据
data = []
for tr in table.find_all('tr')[1:]:
tds = tr.find_all('td')
rank = tds[0].text.strip()
title = tds[1].text.strip()
hot = tds[2].text.strip()
data.append([rank, title, hot])
# 保存数据到本地文件
df = pd.DataFrame(data, columns=['排名', '标题', '热度'])
df.to_csv('hot_search.csv', index=False)
在上面的代码中,我们使用requests库发送HTTP请求,获取微博热搜页面的HTML代码。我们使用BeautifulSoup库解析HTML页面,并找到热搜数据所在的表格。我们使用for循环遍历表格中的每一行数据,并提取排名、标题和热度信息。我们将数据保存到一个列表中,并使用pandas库将数据转换为DataFrame格式。最后,我们使用to_csv方法将数据保存到本地文件中。
示例1:采集B站热门视频数据
以下是一个示例代码,用于采集B站热门视频数据:
import requests
from bs4 import BeautifulSoup
import pandas as pd
# 发送HTTP请求
url = 'https://www.bilibili.com/v/popular/rank/all'
response = requests.get(url)
# 解析HTML页面
soup = BeautifulSoup(response.text, 'html.parser')
ul = soup.find('ul', {'class': 'rank-list'})
# 处理数据
data = []
for li in ul.find_all('li'):
rank = li.find('div', {'class': 'num'}).text.strip()
title = li.find('a', {'class': 'title'}).text.strip()
hot = li.find('div', {'class': 'detail'}).text.strip()
data.append([rank, title, hot])
# 保存数据到本地文件
df = pd.DataFrame(data, columns=['排名', '标题', '热度'])
df.to_csv('bilibili_hot.csv', index=False)
在上面的代码中,我们使用requests库发送HTTP请求,获取B站热门视频页面的HTML代码。我们使用BeautifulSoup库解析HTML页面,并找到热门视频数据所在的列表。我们使用for循环遍历列表中的每一个视频,并提取排名、标题和热度信息。我们将数据保存到一个列表中,并使用pandas库将数据转换为DataFrame格式。最后,我们使用to_csv方法将数据保存到本地文件中。
示例2:采集知乎热榜数据
以下是另一个示例代码,用于采集知乎热榜数据:
import requests
from bs4 import BeautifulSoup
import pandas as pd
# 发送HTTP请求
url = 'https://www.zhihu.com/hot'
response = requests.get(url)
# 解析HTML页面
soup = BeautifulSoup(response.text, 'html.parser')
section = soup.find('section', {'class': 'HotList'})
# 处理数据
data = []
for div in section.find_all('div', {'class': 'HotItem'}):
rank = div.find('div', {'class': 'HotItem-index'}).text.strip()
title = div.find('div', {'class': 'HotItem-content'}).text.strip()
hot = div.find('div', {'class': 'HotItem-metrics'}).text.strip()
data.append([rank, title, hot])
# 保存数据到本地文件
df = pd.DataFrame(data, columns=['排名', '标题', '热度'])
df.to_csv('zhihu_hot.csv', index=False)
在上面的代码中,我们使用requests库发送HTTP请求,获取知乎热榜页面的HTML代码。我们使用BeautifulSoup库解析HTML页面,并找到热榜数据所在的区域。我们使用for循环遍历区域中的每一个热榜条目,并提取排名、标题和热度信息。我们将数据保存到一个列表中,并使用pandas库将数据转换为DataFrame格式。最后,我们使用to_csv方法将数据保存到本地文件中。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python采集热搜数据实现详解 - Python技术站