使用Python爬取一个网页并解析

本文介绍了Python爬虫的基础知识,包括网页、URL和网页源代码的概念,以及爬取网页的简单和详细思路。通过两个代码示例展示了如何爬取数据,分别是从目标URL直接获取和通过其他URL返回的数据。讲解了使用requests和lxml库进行网络数据获取和HTML解析。此外,还强调了开发者工具在网络爬虫中的重要作用。

1. 爬虫准备

1.1. Python基础语法

首先,当你看到这篇文章的时候,我们假定你本身了解Python的基础语法以及熟悉如何安装Python第三方库。在这个基础上,我们就可以继续往下看啦。

1.2. 爬取一个网页的整体思路

1.2.1. 基础概念

网页:网页是构成网站的基本元素,是承载各种网站应用的平台.
例:百度首页在这里插入图片描述

URL:在WWW上,每一信息资源都有统一的且在网上唯一的地址.
例:百度首页
https://www.baidu.com/

网页源代码:一个网页的HTML文件内容。
例:谷歌浏览器打开百度首页,右键,查看网页源代码
在这里插入图片描述

调试模式:谷歌浏览器自带的开发者工具。
例:百度首页
在这里插入图片描述
在这里插入图片描述

PS:这里关于开发者工具的操作不多展开。

1.2.2. 简单思路

  1. 打开一个具体的网页
  2. 编写代码访问这个网页并返回数据
  3. 解析自己想要的数据

很多时候我们会发现爬虫有时候并不是那么顺利,有时候需要加入很多细节,但整体思路都不会离开这三个步骤。显然这远远不够,因此需要更加详细的步骤

1.2.3. 详细思路

  1. 打开一个具体的网页
  2. 查看网页的源代码并查找(CTRL+F)自己所要找的数据是否在网页中。
    2.1. 如果有,这时候打开开发者模式,点击network,刷新。这个时候你会发现你所需要的数据刚好在第一个网址返回。如下
    在这里插入图片描述
    最后编写代码爬取网页并使用xpath解析
    2.2. 如果没有,这时候需要打开开发者模式,点击network,刷新。这个时候你会发现并不能像2.1里面一样,在第一个网站中就返回数据。这个时候数据是藏在其他的js等文件中。(这里需要一点前端开发的基础)。我们需要找到数据存在哪个链接中,而查找的方法很多时候是手动以及根据经验筛选,可以优先先筛选XHR数据。如图:
    在这里插入图片描述
    通过上面那个案例,我们筛选到百度首页的“百度”字样如图:
    在这里插入图片描述
    最后编写代码爬取网页并使用json解析(多数情况下)

1.3. 需要安装的第三方库

requests: 获取网络数据
lxml:     解析html等格式文件的数据

2. 代码示例

2.1. 数据在目标url中

Demo1:爬取bilibili热门信息

from lxml import etree
import requests

# 要爬取的url,注意:在开发者工具中,这个url指的是第一个url
url = "https://www.bilibili.com/v/popular/rank/all"

# 模仿浏览器的headers
headers = {
   
   
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36"
}

# get请求,传入参数,返回结果集
resp = requests.get(url,headers=headers)
# 将结果集的文本转化为树的结构
tree = etree.HTML(resp.text)

# 定义列表存储所有数据
dli = [
好的,下面是一个简单的Python爬虫爬取网页数据解析数据的教程: 1. 确定目标网站和要爬取的信息 首先,需要确定要爬取的网站和要提取的信息。可以使用Python的requests库向网站发送HTTP请求获取HTML源代码,使用BeautifulSoup库解析HTML文档获取目标数据。 例如,我们要爬取优快云博客的文章标题和链接,可以先打开优快云博客主页,右键查看网页源代码,找到文章标题和链接所在的HTML标签。 2. 发送HTTP请求获取HTML源代码 接下来,使用Python的requests库向网站发送HTTP请求,获取HTML源代码。 ``` import requests url = 'https://blog.youkuaiyun.com/' response = requests.get(url) html = response.text ``` 3. 解析HTML文档获取目标数据 使用BeautifulSoup库解析HTML文档,获取目标数据。 ``` from bs4 import BeautifulSoup soup = BeautifulSoup(html, 'html.parser') titles = soup.find_all('div', class_='title') for title in titles: link = title.find('a').get('href') title_text = title.find('a').text.strip() print(title_text, link) ``` 上述代码中,通过`find_all`方法找到所有class属性为"title"的div标签,然后在每个div标签中找到第一个a标签,获取链接和标题文本。 4. 完整代码 ``` import requests from bs4 import BeautifulSoup url = 'https://blog.youkuaiyun.com/' response = requests.get(url) html = response.text soup = BeautifulSoup(html, 'html.parser') titles = soup.find_all('div', class_='title') for title in titles: link = title.find('a').get('href') title_text = title.find('a').text.strip() print(title_text, link) ``` 以上就是一个简单的Python爬虫爬取网页数据解析数据的教程。需要注意的是,在爬取网站数据时要遵守网站的爬虫协议,避免被网站封禁IP。
评论 45
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

执章学长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值