查看原文
其他

爬虫入门:如何用python爬取网易新闻?

江一 脚本之家 2021-06-29

脚本之家

你与百万开发者在一起

作者:江一

出品 | 脚本之家(ID:jb51net)

网络爬虫是帮助我们抓取互联网上有用信息的利器。如果你有一点python基础,实现一个简单的爬虫程序并不难。今天,我们以一个实际的例子——爬取网易新闻,重点介绍使用 BeautifulSoup 对HTML进行解析处理。

1.寻找数据特征

网易新闻的网址 URL 为:https://www.163.com/ 我们打开网页看看:


我们需要爬取这个页面每一条新闻的标题,鼠标右击一条新闻的标题,选择“检查元素”, 出现下图的窗口:


图片中蓝框的位置就是那一条新闻标题在 HTML 中的结构、位置和表现形式:<a > ,它上一级元素为:<li>,再上一级元素为:<ul >再上一级元素为:<div> 我们再看另一条新闻的标题,发现它的结构和之前我们分析的新闻标题的结构是一样的。通过这些信息,我们就可以确定新闻标题在 HTML 文档中的位置。接下来,我们开始使用 Python 对网易新闻标题进行爬取。

2.编写爬取代码

首先呈上完整的代码:

运行程序,获取到的部分结果为如下所示:

这正是我们所需要的。虽然代码很简单,但还是做一点点讲解,方便刚接触的同学理解。

3.逐行解析代码

  1. # coding:utf-8


首先,我们定义了文件的编码形式为 UTF-8,以避免一些编码错误导致中文乱码。


  1. import requests


  2. from bs4 import BeautifulSoup


然后,我们引入了相关的模块,requests 用于 HTTP 请求,BeautifulSoup 用于解析 HTML 响应。


  1. url = "https://www.163.com/"


设置一个变量 url,值为网易新闻的 URL 。


  1. wbdata = requests.get(url).text


使用 requests.get()对 URL 发起 GET 方式的 HTTP 请求,并使用 text()方法获取响应的文本 内容,最后将其赋值给变量 wbdata。


  1. soup = BeautifulSoup(wbdata,'lxml')


使用 BeautifulSoup 对响应文本 wbdata 进行解析处理,这里使用的是 lxml 库,如何没有安 装,可以使用 Python 自带的 html.parser,效果也是一样的。


  1. news_titles = soup.select("div>ul>li>a")


在解析后的文本中,使用select选择器,在文本中选择指定的元素,通常我们还会使用find() 和 findall()方法来进行元素选择。这一步返回的为一个列表,列表内的元素为匹配的元素 的 HTML 源码。


  1. for n in news_titles:

  2. title = n.get_text()

  3. link = n.get("href")

  4. data = {


  5. '标题':title,


  6. '链接':link


  7. }


  8. 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

作者:江一

声明:本文为 脚本之家专栏作者 投稿,未经允许请勿转载。

-END-

●  来写一个属于自己的Web服务器

●  脚本之家粉丝福利,请查看!

● Envoy 500倍增长!5月Web服务器报告出炉

● 谈判失败:Oracle杀死Java EE

● 这些IT经典好书让你受用一生

● 入行AI,程序员为什么要学习NLP?

●  我爸的电脑中了勒索病毒

小贴士

返回 上一级 搜索“Java 女程序员 大数据 留言送书 运维 算法 Chrome 黑客 Python JavaScript 人工智能 女朋友 MySQL 书籍 等关键词获取相关文章推荐。

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存