网络爬虫(Web Crawler 或 Spider)是一种自动化程序,用于在互联网上自动获取信息。它可以从一个或多个初始网页开始,读取网页内容,找到其中的链接,再通过这些链接找到下一个网页,如此循环,直到抓取完所有目标网页。
爬虫的基本工作流程包括以下几个步骤:
网络爬虫的应用非常广泛,包括搜索引擎的网页抓取、数据挖掘、网站监测等。
通过了解这些基础知识,你可以开始构建自己的网络爬虫。以下是几个简短的爬虫应用代码示例:
这个爬虫从一个天气网站抓取当前的天气信息。
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}")
这个爬虫从一个新闻网站抓取最新的新闻标题。
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)
这个爬虫从一个股票网站抓取某只股票的当前价格。
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}")
这个爬虫从一个电商网站抓取某个商品的价格。
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}")
这个爬虫从一个博客网站抓取最新的博客文章标题。
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编写简单的爬虫来抓取不同类型的数据。