最后

🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。
🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。
🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。
🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

<!DOCTYPE html>
<html>
<head>
    <title>My Web Page</title>
</head>
<body>
    <h1>Welcome to My Web Page</h1>
    <p>This is a paragraph.</p>
    <a href="http://www.example.com">Visit Example.com</a>
    <img src="image.jpg" alt="Image">
</body>
</html>

在这个示例中,我们定义了一个简单的HTML文档,其中包含了标题、一个段落、一个超链接和一张图片。

通过了解HTML的基础知识,您将能够更好地理解和处理网页内容。在接下来的部分,我们将介绍如何使用Python解析和提取HTML内容。

3. 正则表达式

在Python中,有几个流行的库可用于解析和处理HTML内容,其中最受欢迎的是BeautifulSoup库和lxml库。

  1. BeautifulSoup库:
    BeautifulSoup是一个功能强大的库,用于从HTML或XML文档中提取数据。它提供了简单且易于使用的API,可以帮助您遍历和搜索HTML标记,从而提取所需的内容。

首先,您需要安装BeautifulSoup库。可以使用以下命令使用pip安装:

pip install beautifulsoup4

下面是使用BeautifulSoup库解析HTML的简单示例:

from bs4 import BeautifulSoup

# HTML示例
html = '''
<html>
<head>
 <title>My Web Page</title>
</head>
<body>
 <h1>Welcome to My Web Page</h1>
 <p>This is a paragraph.</p>
 <a href="http://www.example.com">Visit Example.com</a>
 <img src="image.jpg" alt="Image">
</body>
</html>
'''

# 创建BeautifulSoup对象
soup = BeautifulSoup(html, 'html.parser')

# 提取标题
title = soup.title.text
print("标题:", title)

# 提取段落
paragraph = soup.p.text
print("段落:", paragraph)

# 提取超链接
link = soup.a['href']
print("链接:", link)

# 提取图片
img = soup.img['src']
print("图片:", img)

运行上述代码,您将得到以下输出:

标题: My Web Page
段落: This is a paragraph.
链接: http://www.example.com
图片: image.jpg

  1. lxml库:
    lxml是Python中另一个流行的HTML解析库,它使用C语言编写,因此在速度和性能方面比BeautifulSoup更快。与BeautifulSoup一样,lxml也提供了一组方便的API来解析和提取HTML内容。

首先,您需要安装lxml库。可以使用以下命令使用pip安装:

pip install lxml

下面是使用lxml库解析HTML的简单示例:

from lxml import etree

# HTML示例
html = '''
<html>
<head>
 <title>My Web Page</title>
</head>
<body>
 <h1>Welcome to My Web Page</h1>
 <p>This is a paragraph.</p>
 <a href="http://www.example.com">Visit Example.com</a>
 <img src="image.jpg" alt="Image">
</body>
</html>
'''

# 创建lxml解析器对象
parser = etree.HTMLParser()

# 解析HTML
tree = etree.fromstring(html, parser)

# 提取标题
title = tree.findtext('.//title')
print("标题:", title)

# 提取段落
paragraph = tree.findtext('.//p')
print("段落:", paragraph)

# 提取超链接
link = tree.xpath('.//a/@href')
print("链接:", link)

# 提取图片
img = tree.xpath('.//img/@src')
print("图片:", img)

运行上述代码,您将得到与使用BeautifulSoup相同的输出结果。

通过使用BeautifulSoup或lxml库,您可以方便地解析和提取HTML文档中的内容。这对于从网页中获取数据或进行网页爬取非常有用。

4. XPath和CSS选择器

了解XPath和CSS选择器的基本用法,它们是解析网页的常用工具。

【二、常用库】

1. Requests

使用Requests库发送HTTP请求,获取网页内容。

2. Beautiful Soup

使用Beautiful Soup库解析网页,提取需要的数据。

3. Selenium

使用Selenium库模拟浏览器操作,处理动态网页和JavaScript渲染。

4. Scrapy

学习使用Scrapy库,它是一个功能强大的爬虫框架,能够高效地爬取大量网页。

【三、实例演示】

1. 简单爬虫

编写一个简单的爬虫程序,获取网页内容并保存到本地。

import requests

def save\_webpage(url, filename):
    response = requests.get(url)
    if response.status_code == 200:
        with open(filename, 'w', encoding='utf-8') as file:
            file.write(response.text)
        print(f"网页内容已保存到文件 {filename} 中。")
    else:
        print("无法获取网页内容。")

# 指定要爬取的网页URL
url = "http://example.com"
# 指定保存的文件名
filename = "webpage.html"

# 调用函数进行爬取和保存
save_webpage(url, filename)

这个程序使用了Python的requests库来发送HTTP请求,并通过get()方法获取网页的内容。然后,判断响应的状态码是否为200,如果是,就将网页内容保存到指定的文件中。

您只需将上述代码保存为一个Python文件,运行即可。请确保您已经安装了requests库,可以使用以下命令安装:

pip install requests

您可以根据需要修改URL和文件名来爬取不同的网页内容并保存。

2. 图片爬虫

编写一个爬虫程序,从网页中提取图片链接,并下载保存图片。

import requests
from bs4 import BeautifulSoup
import os

def download\_image(url, save_path):
    response = requests.get(url)
    if response.status_code == 200:
        with open(save_path, 'wb') as file:
            file.write(response.content)
        print(f"图片已保存到 {save\_path}。")
    else:
        print("无法下载图片。")

def extract\_image\_links(url):
    response = requests.get(url)
    if response.status_code == 200:
        soup = BeautifulSoup(response.text, 'html.parser')
        image_links = []
        for img in soup.find_all('img'):
            image_links.append(img['src'])
        return image_links
    else:
        return []

def save\_images\_from\_url(url, save_dir):
    image_links = extract_image_links(url)
    if not image_links:
        print("未找到图片链接。")
        return
    if not os.path.exists(save_dir):
        os.makedirs(save_dir)
    for link in image_links:
        image_url = link
        image_name = link.split('/')[-1]
        save_path = os.path.join(save_dir, image_name)
        download_image(image_url, save_path)

# 指定要爬取的网页URL
url = "http://example.com"
# 指定保存图片的文件夹
save_dir = "images"

# 调用函数进行爬取和保存图片
save_images_from_url(url, save_dir)

这个程序使用了Python的requests库来发送HTTP请求,并使用BeautifulSoup库来解析网页内容。首先,通过extract_image_links()函数从网页中提取所有图片链接。然后,通过download_image()函数下载并保存每个图片。

您只需将上述代码保存为一个Python文件,运行即可。请确保您已经安装了requestsbeautifulsoup4库,可以使用以下命令安装:

pip install requests
pip install beautifulsoup4

您可以根据需要修改URL和保存图片的文件夹路径来爬取不同网页的图片并保存。

3. 数据爬取

编写一个爬虫程序,从网页中提取指定数据,并保存到CSV、Excel或数据库中。

import requests
from bs4 import BeautifulSoup
import csv
import pandas as pd
import sqlite3

def extract\_data(url):
    response = requests.get(url)
    if response.status_code == 200:
        soup = BeautifulSoup(response.text, 'html.parser')
        # 在这里根据网页结构提取数据
        # 示例:提取所有标题和内容
        data = []
        for item in soup.find_all('div', class_='item'):
            title = item.find('h2').text.strip()
            content = item.find('p').text.strip()
            data.append({'title': title, 'content': content})
        return data
    else:
        return []

def save\_to\_csv(data, csv_file):
    with open(csv_file, 'w', newline='', encoding='utf-8') as file:
        writer = csv.DictWriter(file, fieldnames=data[0].keys())
        writer.writeheader()
        writer.writerows(data)
    print(f"数据已保存到 {csv\_file}。")

def save\_to\_excel(data, excel_file):
    df = pd.DataFrame(data)
    df.to_excel(excel_file, index=False)
    print(f"数据已保存到 {excel\_file}。")

def save\_to\_database(data, db_file):
    conn = sqlite3.connect(db_file)
    c = conn.cursor()
    c.execute('''CREATE TABLE IF NOT EXISTS data
 (id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, content TEXT)''')
    c.executemany("INSERT INTO data (title, content) VALUES (?, ?)",
                  [(item['title'], item['content']) for item in data])
    conn.commit()
    conn.close()
    print(f"数据已保存到 {db\_file}。")

# 指定要爬取的网页URL
url = "http://example.com"
# 指定保存数据的文件路径或数据库文件路径
csv_file = "data.csv"
excel_file = "data.xlsx"
db_file = "data.db"

# 调用函数进行爬取和保存数据
data = extract_data(url)
if data:
    save_to_csv(data, csv_file)
    save_to_excel(data, excel_file)
    save_to_database(data, db_file)

将上述代码保存为一个Python文件,运行即可。请确保您已经安装了requestsbeautifulsoup4pandassqlite3库,可以使用以下命令安装:

在这里插入图片描述

感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的:

① 2000多本Python电子书(主流和经典的书籍应该都有了)

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐