Python 基础入门 Day14

48次阅读
没有评论

共计 2390 个字符,预计需要花费 6 分钟才能阅读完成。

欢迎来到 Python 基础入门 Day14!在前一节中,我们学习了如何使用 requests 模块发送和处理 HTTP 请求。如果你已经掌握了这些内容,今天的内容将更令人兴奋:Web 爬虫 !爬虫是从网页提取数据的工具,它是数据分析和机器学习项目的重要基础。


目录

  1. 什么是 Web 爬虫?
  2. 安全与合法性注意事项
  3. 使用 requests 获取网页内容
  4. 使用 BeautifulSoup 解析 HTML
  5. 示例:爬取一个简单网页
  6. 处理分页与动态加载
  7. 小结与练习

一、什么是 Web 爬虫?

Web 爬虫(Web Scraper)是通过编程方式访问网页,并自动提取其中的数据。常见应用包括:

  • 数据收集(如价格监控、新闻爬取)
  • 搜索引擎索引(如 Google 搜索)
  • 内容聚合(如旅游、招聘信息)

注意 :爬取网站前,请阅读目标网站的 robots.txt 文件,了解其爬取规则并避免违规操作。


二、安全与合法性注意事项

在爬取网页之前,请牢记以下事项:

  1. 尊重网站规则 :检查网站的 robots.txt 文件,遵守限制。
  2. 不要过于频繁请求 :设置合适的爬取间隔,避免给服务器带来压力。
  3. 不要爬取敏感数据 :尊重用户隐私。
  4. 爬取合法内容 :未经授权,避免爬取受版权保护的内容。

示例:访问 https://example.com/robots.txt 查看该站点的爬取限制。


三、使用 requests 获取网页内容

我们可以使用 requests 模块获取网页的 HTML 内容:

import requests

url = "https://example.com"
response = requests.get(url)

# 检查状态码和响应内容
if response.status_code == 200:
    print(response.text)  # 输出 HTML 源代码
else:
    print(f"Failed to retrieve the page: {response.status_code}")

四、使用 BeautifulSoup 解析 HTML

BeautifulSoup 是一个强大的 HTML 解析库,它能轻松提取页面中的特定数据。

4.1 安装 BeautifulSoup

使用 pip 安装:

pip install beautifulsoup4 lxml

4.2 基本用法

以下示例展示了如何提取标题和所有链接:

from bs4 import BeautifulSoup

html = """
<html>
    <head><title>Example Page</title></head>
    <body>
        <h1>Welcome to Example Page</h1>
        <a href="https://example.com/page1">Page 1</a>
        <a href="https://example.com/page2">Page 2</a>
    </body>
</html>
"""soup = BeautifulSoup(html,'lxml')

# 提取标题
print(soup.title.string)

# 提取所有链接
for link in soup.find_all('a'):
    print(link['href'])

输出结果

Example Page
https://example.com/page1
https://example.com/page2

五、示例:爬取一个简单网页

以下示例展示了如何爬取 豆瓣读书 Top250 的书名和评分:

5.1 代码实现

import requests
from bs4 import BeautifulSoup

url = "https://book.douban.com/top250"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'lxml')

# 提取书名和评分
books = soup.find_all('tr', class_='item')
for book in books:
    title = book.find('div', class_='pl2').a['title']
    rating = book.find('span', class_='rating_nums').text
    print(f"Title: {title}, Rating: {rating}")

5.2 输出结果

Title: 平凡的世界(全三部), Rating: 9.4
Title: 红楼梦(上下), Rating: 9.6
...

六、处理分页与动态加载

6.1 爬取多页数据

许多网站的数据分布在多个页面上。可以通过改变 URL 中的分页参数来爬取:

for page in range(1, 6):  # 爬取前 5 页
    url = f"https://example.com/page/{page}"
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'lxml')
    # 处理页面数据 

6.2 动态加载内容

有些网站的数据通过 JavaScript 动态加载,此时 requests 无法获取完整内容。可以使用以下两种方法解决:

  1. 检查 API 接口 :许多网站在加载动态内容时调用 API,可以直接抓取 API 数据。
  2. 使用 Selenium 模拟浏览器 :适用于复杂场景(详细内容请参考后续课程)。

七、小结与练习

今天我们学习了 Python 的 Web 爬虫基础 ,包括使用 requests 获取网页内容和 BeautifulSoup 解析 HTML。爬虫是处理大规模数据的有效工具,但在使用时必须注意合法性和合规性。

今日练习题:

  1. 使用 requestsBeautifulSoup 爬取一个简单网站上的文章标题列表。
  2. 爬取某电商网站的商品名称和价格(尽量选择公开、无限制的数据)。
  3. 探索网站的 API 接口,尝试直接抓取 JSON 数据。

下一节预告 :在 Day15 中,我们将介绍 Python 爬虫进阶:Selenium 的使用 ,教你如何处理动态网页爬取。敬请期待!


希望你在今天的学习中有所收获!如果有任何问题或建议,欢迎留言交流 😊。

正文完
 0
评论(没有评论)