python爬虫最全教程_python网路爬虫基本教程第六单元协程爬虫基本示例(1)
🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。网上学习资料一大堆,但如果学到的知识不成
最后
🍅 硬核资料:关注即可领取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库。
- 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
- 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文件,运行即可。请确保您已经安装了requests
和beautifulsoup4
库,可以使用以下命令安装:
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文件,运行即可。请确保您已经安装了requests
、beautifulsoup4
、pandas
和sqlite3
库,可以使用以下命令安装:
感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的:
① 2000多本Python电子书(主流和经典的书籍应该都有了)
② Python标准库资料(最全中文版)
③ 项目源码(四五十个有趣且经典的练手项目及源码)
④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)
⑤ Python学习路线图(告别不入流的学习)
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

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