Hi,大家好,我是半亩花海。本项目是一个简单的网络爬虫,用于从网易新闻的热点新闻列表中提取标题和对应的链接,并将提取到的数据保存到一个 CSV 文件中。
目录
一、技术栈
- Python
- Requests 库:用于发送 HTTP 请求
- lxml 库:用于解析 HTML 文档
- CSV 文件操作
二、功能说明
- 通过发送 HTTP 请求到网易新闻的热点新闻列表页面,获取页面内容。
- 使用 XPath 解析页面内容,提取新闻标题和对应链接。
- 将提取的标题和链接写入 CSV 文件,每一行包含一个标题和其对应的链接。
三、注意事项
- 网络爬虫应遵守网站的 Robots 协议和法律法规,不得对网站造成不必要的负担或侵犯其权益。
- 在进行大规模爬取时,建议添加适当的延时和错误处理机制,以避免被网站封禁 IP 或其他异常情况。
四、代码解析
1. 导入所需库
import requests
from lxml import etree
2. 定义目标URL和请求头
url = 'https://c.m.163.com/news/hot/newsList'
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 '
'Safari/537.36 '
}
3. 发送HTTP请求获取网页内容
response = requests.get(url, headers=headers)
4. 解析网页内容
data = etree.HTML(response.text)
5. 提取标题和链接
title_list = data.xpath('//div[@class="title"]/a/text()')
href_list = data.xpath('//div[@class="title"]/a/@href')
6. 将提取的数据写入 CSV 文件
with open('网易.csv', 'a+', encoding='utf-8') as f:
for title, href in zip(title_list, href_list):
print("Title:", title) # 标题
print("Href:", href) # 超链接
f.write("{},{}\n".format(title, href))
五、结果展示
六、完整代码
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
import requests
from lxml import etree
url = 'https://c.m.163.com/news/hot/newsList'
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 '
'Safari/537.36 '
}
response = requests.get(url, headers=headers)
data = etree.HTML(response.text)
title_list = data.xpath('//div[@class="title"]/a/text()')
href_list = data.xpath('//div[@class="title"]/a/@href')
# 保存数据,指定编码为UTF-8
with open('网易.csv', 'a+', encoding='utf-8') as f:
for title, href in zip(title_list, href_list):
print("Title:", title) # 标题
print("Href:", href) # 超链接
f.write("{},{}\n".format(title, href))