3.“https://news.sina.com.cn/hotnews/”页面中“点击量”新闻标题和对应链接的爬取,给出源代码
时间: 2024-01-01 07:06:21 浏览: 57
以下是使用Python的requests和BeautifulSoup库爬取新浪新闻热点页面的代码示例:
```python
import requests
from bs4 import BeautifulSoup
# 发送请求获取页面内容
url = 'https://news.sina.com.cn/hotnews/'
response = requests.get(url)
html = response.content.decode('utf-8')
# 解析页面内容,获取新闻标题和对应链接
soup = BeautifulSoup(html, 'html.parser')
news_list = soup.select('#con01 > div > ul > li')
for news in news_list:
title = news.select_one('a').text
link = news.select_one('a')['href']
clicks = news.select_one('.c-num').text
print(f'{title} ({clicks}): {link}')
```
代码中使用了CSS选择器来定位新闻标题、链接和点击量。其中,`#con01 > div > ul > li`选择器定位新闻列表中的每一条新闻,`a`选择器定位新闻标题和链接,`.c-num`选择器定位点击量。最终结果将每条新闻的标题、链接和点击量输出到控制台。
相关问题
使用requests和lxml库,提取 https://news.baidu.com/中的热点要闻节点的标题和链接,并存储为json文件
为了使用`requests`和`lxml`库从指定网页中提取热点要闻节点的标题和链接并将其存储为JSON文件,首先你需要安装这两个库,如果还没有安装可以使用以下命令:
```bash
pip install requests lxml
```
接下来是一个简单的Python脚本示例,它将按照你的需求完成这个任务:
```python
import requests
from bs4 import BeautifulSoup
import json
# 请求百度新闻网页
url = "https://news.baidu.com/"
response = requests.get(url)
# 检查请求是否成功
if response.status_code == 200:
# 解析HTML内容
soup = BeautifulSoup(response.text, 'lxml')
# 找到热点要闻部分(这通常有一个特定的CSS选择器或者ID)
# 这里假设热点新闻列表在id为"hotnews_list"的div元素中
hot_news_list = soup.select('#hotnews_list .title a')
# 创建一个空列表来存储结果
news_data = []
# 提取每个新闻的标题和链接
for item in hot_news_list:
title = item.text
link = item['href']
news_data.append({'title': title, 'link': link})
# 将数据保存为JSON文件
with open('news.json', 'w') as f:
json.dump(news_data, f, ensure_ascii=False, indent=2)
else:
print(f"请求失败,状态码:{response.status_code}")
根据如下的情况,写出获取百度,微博,知乎热点标题,后保存到hot.txt,每30分钟自动执行一次获取保存过程:接口地址: http://api.bossdoit.com/api/hotnews 返回格式: JSON 请求方式: GET 请求示例: http://api.bossdoit.com/api/hotnews?type=zhihu 请求参数说明: 名称 必填 类型 说明 type 是 string 热点类型:zhihu为知乎热榜API,weibo为微博热搜API,baidu为百度热点API
以下是Python的代码实现:
```python
import requests
import json
import time
while True:
types = ["zhihu", "weibo", "baidu"]
for t in types:
url = "http://api.bossdoit.com/api/hotnews?type=" + t
response = requests.get(url)
data = json.loads(response.text)
hot_titles = [d['title'] for d in data]
with open('hot.txt', 'a', encoding='utf-8') as f:
f.write(f"{t}热点标题:\n")
for title in hot_titles:
f.write(f"{title}\n")
f.write("\n")
time.sleep(1800) # 每30分钟执行一次
```
代码解释:
1. 导入所需的库:requests用于发送HTTP请求,json用于解析JSON格式的数据,time用于延时执行。
2. 设置一个死循环,不断获取并保存热点标题。
3. 定义热点类型列表。
4. 遍历每个热点类型,发送GET请求获取数据。
5. 解析JSON格式的响应数据,提取出热点标题。
6. 将热点标题写入hot.txt文件中,并在每个标题前加上对应的热点类型。
7. 延时30分钟后再次执行。
阅读全文