import requests from bs4 import BeautifulSoup import csv # 请求URL url = 'https://s.weibo.com/top/summary' # 请求头部信息 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} # 发送请求 response = requests.get(url, headers=headers) # 解析HTML页面 soup = BeautifulSoup(response.text, 'lxml') # 获取热搜列表 hot_list = soup.find_all('tr')[1:11] # 输出展示和保存到csv文件 with open('weibo_hot.csv', 'w', newline='', encoding='utf-8-sig') as csvfile: writer = csv.writer(csvfile) writer.writerow(['排名', '标题', '日期', '内容']) for i, item in enumerate(hot_list): title = item.find_all('a')[0].text date = item.find_all('td')[1].text content = item.find_all('td')[2].text.strip() writer.writerow([i+1, title, date, content]) print(f"{i+1}. 标题:{title} 日期:{date} 内容:{content}")
时间: 2023-07-15 14:10:24 浏览: 39
这是一个爬取微博热搜榜的Python程序。首先,使用requests库发送GET请求获取HTML页面,然后使用BeautifulSoup库解析HTML页面。接着,找到热搜列表所在的HTML标签,并且用find_all方法获取前10个热搜。最后,将热搜的排名、标题、日期和内容写入CSV文件,并且在控制台输出热搜的详细信息。
相关问题
url = 'https://weibo.com/ajax/statuses/searchProfile'爬取微博python
要爬取微博,可以使用 Python 中的请求库(如 requests)和解析库(如 BeautifulSoup)来发送 HTTP 请求并解析返回的数据。
下面是一个示例代码,用于爬取微博的搜索结果页面:
```python
import requests
from bs4 import BeautifulSoup
url = 'https://weibo.com/ajax/statuses/searchProfile'
# 构造请求参数
params = {
'keyword': '关键词', # 要搜索的关键词
'page': 1, # 要获取的页数
}
# 发送 GET 请求
response = requests.get(url, params=params)
# 解析响应数据
soup = BeautifulSoup(response.text, 'html.parser')
# 处理解析后的数据
# 可以使用 BeautifulSoup 提供的方法来提取需要的信息
# 示例:提取搜索结果列表中的用户名和用户ID
results = soup.select('.person_list .person_name')
for result in results:
username = result.text.strip()
user_id = result['usercard'][3:]
print(f'用户名:{username},用户ID:{user_id}')
```
在上述代码中,首先构造了请求参数,包括关键词和页数。然后使用 requests 库发送 GET 请求,并通过 BeautifulSoup 解析响应数据。
根据实际情况,可以使用 BeautifulSoup 提供的方法来提取需要的信息。示例代码中使用了 CSS 选择器来选择搜索结果列表中的用户名和用户ID,并打印出来。你可以根据自己的需求修改和扩展这部分代码。
需要注意的是,微博的页面结构可能会发生变化,所以在编写爬取代码时需要根据实际情况进行调整和适配。另外,爬取网站的数据时,需要遵守网站的使用规则和法律法规,不要进行非法的爬取行为。
爬取 https://haokan.baidu.com/?sfrom=baidu-top 所有的视频
首先,我们需要分析该网站的页面结构,发现该网站采用了动态加载技术,因此我们需要使用模拟浏览器的方式来获取页面内容。
以下是实现的步骤:
1. 安装 selenium 库,并下载对应浏览器的 webdriver。
2. 打开浏览器并访问 https://haokan.baidu.com/?sfrom=baidu-top。
3. 模拟下拉操作,等待页面加载完毕。
4. 使用 BeautifulSoup 解析页面内容,获取视频链接。
5. 使用 requests 库下载视频。
以下是代码示例:
```python
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup
import requests
import time
# 打开浏览器
driver = webdriver.Chrome()
# 访问网站
driver.get('https://haokan.baidu.com/?sfrom=baidu-top')
# 模拟下拉操作
for i in range(10):
driver.find_element_by_tag_name('body').send_keys(Keys.END)
time.sleep(2)
# 解析页面内容
html = driver.page_source
soup = BeautifulSoup(html, 'html.parser')
videos = soup.find_all('a', {'class': 'video-card-common'})
# 下载视频
for video in videos:
url = video.get('href')
r = requests.get(url, stream=True)
with open(url.split('/')[-1], 'wb') as f:
for chunk in r.iter_content(chunk_size=1024):
if chunk:
f.write(chunk)
```
需要注意的是,该代码只能爬取最新的视频,如果需要爬取更多视频,则需要模拟翻页操作,并修改代码来实现。同时,由于视频较多,建议使用多线程或异步方式来下载视频以提高效率。