python爬网易新闻
脚本之家
你与百万开发者在一起
作者:江一
出品 | 脚本之家(ID:jb51net)
网络爬虫是帮助我们抓取互联网上有用信息的利器。如果你有一点python基础,实现一个简单的爬虫程序并不难。今天,我们以一个实际的例子——爬取网易新闻,重点介绍使用 BeautifulSoup 对HTML进行解析处理。
1.寻找数据特征
网易新闻的网址 URL 为:https://www.163.com/我们打开网页看看:
我们需要爬取这个页面每一条新闻的标题,鼠标右击一条新闻的标题,选择“检查元素”, 出现下图的窗口:
图片中蓝框的位置就是那一条新闻标题在 HTML 中的结构、位置和表现形式: ,它上一级元素为:,再上一级元素为:
再上一级元素为:
我们再看另一条新闻的标题,发现它的结构和之前我们分析的新闻标题的结构是一样的。通过这些信息,我们就可以确定新闻标题在 HTML 文档中的位置。接下来,我们开始使用 Python 对网易新闻标题进行爬取。
2.编写爬取代码
首先呈上完整的代码:
运行程序,获取到的部分结果为如下所示:
这正是我们所需要的。虽然代码很简单,但还是做一点点讲解,方便刚接触的同学理解。
3.逐行解析代码
# coding:utf-8
首先,我们定义了文件的编码形式为 UTF-8,以避免一些编码错误导致中文乱码。importrequests
frombs4importBeautifulSoup
然后,我们引入了相关的模块,requests 用于 HTTP 请求,BeautifulSoup 用于解析 HTML 响应。
url ='https://www.163.com/'
设置一个变量 url,值为网易新闻的 URL 。wbdata = requests.get(url).text
使用 requests.get()对 URL 发起 GET 方式的 HTTP 请求,并使用 text()方法获取响应的文本 内容,最后将其赋值给变量 wbdata。
soup =BeautifulSoup(wbdata,'lxml')
使用 BeautifulSoup 对响应文本 wbdata 进行解析处理,这里使用的是 lxml 库,如何没有安 装,可以使用 Python 自带的 html.parser,效果也是一样的。news_titles = soup.select('div>ul>li>a')
在解析后的文本中,使用select选择器,在文本中选择指定的元素,通常我们还会使用find() 和 findall()方法来进行元素选择。这一步返回的为一个列表,列表内的元素为匹配的元素 的 HTML 源码。
forninnews_titles:
title = n.get_text()
link = n.get('href')
data = {
'标题':title,
'链接':link
}
print(data)
对结果列表进行遍历,再从遍历的元素中提取出数据,get('href')表示获取属性名为“hre的属性值,get_text()表示获取标签的文本信息。这样,一个简单的网易新闻爬虫就完成了。
如果想学习更多 requests 模块和 BeautifulSoup 模块的内容,它们的官方文档将是最好的指南。
参考文档:1.requests 官方文档(中文):
http://docs.python-requests.org/zh_CN/latest/
2.BeautifulSoup 文档(中文):
https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html
作者:江一
相关文章
- Python使用tkinter组件Label显示简单数学公式
- 内网渗透之DCOM横向移动
- 以目标为导向的语义交流的共同语言——一个课程学习框架
- python爬虫前奏【成信笔记】
- HTML 5 File API:文件拖放上传功能
- 教你快速创建 Python 虚拟环境
- pyenv 实现Python多版本自由切换
- 用 Python 对 Excel文件进行批量操作
- Python - 接入钉钉机器人
- Python - 抓取 iphone13 pro 线下店供货信息并发送到钉钉机器人,最后设置为定时任务
- crontab - 解决 mac 下通过 crontab 设置了 Python 脚本的定时任务却无法运行
- [源码解析] PyTorch分布式(5) ------ DistributedDataParallel 总述&如何使用
- Python科普系列——类与方法(上篇)
- SAP对STO的交货单执行PGI,报错 -Fld selectn for mvmt type 643 acct 400020 differs
- Spring Boot 实现通用 Auth 认证的 4 种方式
- 盘点4种使用Python批量合并同一文件夹内所有子文件夹下的Excel文件内所有Sheet数据
- OushuDB 学习经验分享(三):技术特点
- Java和Python思维方式的不同之处
- Python中日志记录新技能
- 奥比中光Gemini OpenCV—Python使用