文章目录
- 网络爬虫基础知识
- 爬虫的定义
- 爬虫的工作流程
- 常用技术和工具
- 爬虫的应用
- 1. 抓取天气信息
- 2. 抓取新闻标题
- 3. 抓取股票价格
- 4. 抓取商品价格
- 5. 抓取博客文章标题
网络爬虫基础知识
爬虫的定义
网络爬虫(Web Crawler 或 Spider)是一种自动化程序,用于在互联网上自动获取信息。它可以从一个或多个初始网页开始,读取网页内容,找到其中的链接,再通过这些链接找到下一个网页,如此循环,直到抓取完所有目标网页。
爬虫的工作流程
爬虫的基本工作流程包括以下几个步骤:
- 发起请求:向目标网站发送HTTP请求。
- 获取响应:接收服务器返回的HTML页面。
- 解析内容:使用解析库(如BeautifulSoup)提取所需数据。
- 存储数据:将提取的数据保存到本地文件或数据库中。
常用技术和工具
- HTTP协议:爬虫通过HTTP协议与网站服务器进行通信,常用的请求方法有GET和POST。
- 解析库:如BeautifulSoup、lxml,用于解析HTML和XML文档。
- 数据存储:可以使用CSV、JSON、数据库(如SQLite、MySQL)等方式存储数据。
爬虫的应用
网络爬虫的应用非常广泛,包括搜索引擎的网页抓取、数据挖掘、网站监测等。
通过了解这些基础知识,你可以开始构建自己的网络爬虫。以下是几个简短的爬虫应用代码示例:
1. 抓取天气信息
这个爬虫从一个天气网站抓取当前的天气信息。
import requests
from bs4 import BeautifulSoup
# 目标URL
url = "https://www.weather.com/weather/today/l/USCA0638:1:US"
# 发送HTTP请求
response = requests.get(url)
response.encoding = 'utf-8'
# 解析HTML页面
soup = BeautifulSoup(response.text, 'html.parser')
# 提取天气信息
temperature = soup.find('span', class_='CurrentConditions--tempValue--3KcTQ').text
condition = soup.find('div', class_='CurrentConditions--phraseValue--2xXSr').text
print(f"当前温度: {temperature}")
print(f"天气状况: {condition}")
2. 抓取新闻标题
这个爬虫从一个新闻网站抓取最新的新闻标题。
import requests
from bs4 import BeautifulSoup
# 目标URL
url = "https://news.ycombinator.com/"
# 发送HTTP请求
response = requests.get(url)
response.encoding = 'utf-8'
# 解析HTML页面
soup = BeautifulSoup(response.text, 'html.parser')
# 提取新闻标题
titles = soup.find_all('a', class_='storylink')
for title in titles:
print(title.text)
3. 抓取股票价格
这个爬虫从一个股票网站抓取某只股票的当前价格。
import requests
from bs4 import BeautifulSoup
# 目标URL
url = "https://finance.yahoo.com/quote/AAPL/"
# 发送HTTP请求
response = requests.get(url)
response.encoding = 'utf-8'
# 解析HTML页面
soup = BeautifulSoup(response.text, 'html.parser')
# 提取股票价格
price = soup.find('fin-streamer', {'data-field': 'regularMarketPrice'}).text
print(f"苹果公司当前股价: {price}")
4. 抓取商品价格
这个爬虫从一个电商网站抓取某个商品的价格。
import requests
from bs4 import BeautifulSoup
# 目标URL
url = "https://www.amazon.com/dp/B08N5WRWNW"
# 发送HTTP请求
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
}
response = requests.get(url, headers=headers)
response.encoding = 'utf-8'
# 解析HTML页面
soup = BeautifulSoup(response.text, 'html.parser')
# 提取商品价格
price = soup.find('span', class_='a-price-whole').text
print(f"商品价格: {price}")
5. 抓取博客文章标题
这个爬虫从一个博客网站抓取最新的博客文章标题。
import requests
from bs4 import BeautifulSoup
# 目标URL
url = "https://medium.com/"
# 发送HTTP请求
response = requests.get(url)
response.encoding = 'utf-8'
# 解析HTML页面
soup = BeautifulSoup(response.text, 'html.parser')
# 提取博客文章标题
titles = soup.find_all('h2')
for title in titles:
print(title.text)
这些示例展示了如何使用Python编写简单的爬虫来抓取不同类型的数据。