轻量级 Python 爬虫实现表格
流程图
flowchart TD
Start --> 输入URL
输入URL --> 发送请求
发送请求 --> 解析HTML
解析HTML --> 提取表格数据
提取表格数据 --> 存储数据
存储数据 --> End
类图
classDiagram
class Spider {
- url
- html
- table_data
+ send_request()
+ parse_html()
+ extract_table_data()
+ store_data()
}
教程
步骤一:发送请求
首先,我们需要发送一个请求来获取网页的 HTML 内容。我们可以使用 requests 库来实现这一步骤。
import requests
class Spider:
def __init__(self, url):
self.url = url
self.html = None
def send_request(self):
response = requests.get(self.url)
self.html = response.text
步骤二:解析HTML
接下来,我们需要解析 HTML 内容,以便后续提取表格数据。我们可以使用 BeautifulSoup 库来实现这一步骤。
from bs4 import BeautifulSoup
class Spider:
def __init__(self, url):
self.url = url
self.html = None
self.soup = None
def parse_html(self):
self.soup = BeautifulSoup(self.html, 'html.parser')
步骤三:提取表格数据
在这一步中,我们需要从 HTML 中提取出表格数据。我们可以通过查找表格标签来实现这一步骤。
class Spider:
def __init__(self, url):
self.url = url
self.html = None
self.soup = None
self.table_data = None
def extract_table_data(self):
table = self.soup.find('table')
rows = table.find_all('tr')
data = []
for row in rows:
cols = row.find_all('td')
cols = [col.text.strip() for col in cols]
data.append(cols)
self.table_data = data
步骤四:存储数据
最后,我们可以将提取到的表格数据存储起来,可以存储为 CSV 文件或者数据库。
import csv
class Spider:
def __init__(self, url):
self.url = url
self.html = None
self.soup = None
self.table_data = None
def store_data(self):
with open('table_data.csv', 'w', newline='') as file:
writer = csv.writer(file)
for row in self.table_data:
writer.writerow(row)
完整代码
import requests
from bs4 import BeautifulSoup
import csv
class Spider:
def __init__(self, url):
self.url = url
self.html = None
self.soup = None
self.table_data = None
def send_request(self):
response = requests.get(self.url)
self.html = response.text
def parse_html(self):
self.soup = BeautifulSoup(self.html, 'html.parser')
def extract_table_data(self):
table = self.soup.find('table')
rows = table.find_all('tr')
data = []
for row in rows:
cols = row.find_all('td')
cols = [col.text.strip() for col in cols]
data.append(cols)
self.table_data = data
def store_data(self):
with open('table_data.csv', 'w', newline='') as file:
writer = csv.writer(file)
for row in self.table_data:
writer.writerow(row)
# 使用方法
url = '
spider = Spider(url)
spider.send_request()
spider.parse_html()
spider.extract_table_data()
spider.store_data()
通过以上教程,你可以轻松地实现一个轻量级的 Python 爬虫来提取表格数据。希望对你有所帮助!