for row in table_rows: data = [] for cell in row.find_all('td'): text = cell.text.strip() if text.isalpha(): data.append(text) if data: data_list.append(data) print(data_list) sql = 'insert into dbo.Table_1(project,address,developer,date) values(%s,%s,%s,%s) '
时间: 2024-02-02 15:02:26 浏览: 150
这段代码看起来是从HTML表格中提取数据,并将数据插入到SQL Server表dbo.Table_1中。具体来说,代码首先遍历表格的每一行,然后对于每一行,它找到所有的单元格(td标签),并将单元格中的文本内容去掉前后空格后存储到一个列表中。如果列表不为空,就将列表中的数据插入到SQL Server表dbo.Table_1中。其中,数据的插入是通过使用参数化查询来实现的,避免了SQL注入的风险。
相关问题
import requests from bs4 import BeautifulSoup from openpyxl import Workbook url = 'http://124.95.133.164/work/xjlp/new_building.jsp' response = requests.get(url) soup = BeautifulSoup(response.content, 'html.parser') table = soup.select_one('table.table') rows = table.select('tr') workbook = Workbook() sheet = workbook.active for row in rows: cells = row.select('td') if len(cells) > 0: values = [cell.text.strip() for cell in cells] sheet.append(values) workbook.save('data.xlsx')workbook = Workbook() sheet = workbook.active for row in rows: cells = row.select('td') if len(cells) > 0: values = [cell.text.strip() for cell in cells] sheet.append(values) workbook.save('data.xlsx')这段代码报错NoneType' object has no attribute 'select'怎么改
根据你提供的代码,报错出现在以下这段代码中:
```
table = soup.select_one('table.table')
rows = table.select('tr')
```
这个错误通常出现在soup.select_one()没有找到任何元素时。当无法找到匹配的元素时,select_one()方法返回None,因此当你尝试对其调用select()方法时,就会出现"NoneType' object has no attribute 'select'"的错误。
为了解决这个问题,你需要确保在调用select()方法之前,已经成功地找到了匹配的元素。以下是一种可能的解决方法:
```
table = soup.find('table', {'class': 'table'})
if table:
rows = table.find_all('tr')
# rest of the code
else:
print("Table not found")
```
在这个解决方案中,我们使用了BeautifulSoup的find()方法来寻找class为"table"的table元素。如果找到了这个元素,我们就可以继续使用find_all()方法来找到所有的tr元素。如果没有找到这个元素,我们就可以输出一条错误信息。
你可以根据自己的需求,使用类似的方法来解决这个问题。
import requests from bs4 import BeautifulSoup from openpyxl import Workbook # 发起HTTP请求获取网页内容 url = 'http://yjszs.hfut.edu.cn/2023/0505/c13524a291829/page.htm' # 将此处替换为你要爬取的网页URL response = requests.get(url) html = response.text # 使用BeautifulSoup解析HTML soup = BeautifulSoup(html, 'html.parser') # 创建一个Excel工作簿和工作表 workbook = Workbook() sheet = workbook.active # 查找表格元素并将其写入Excel表格 table = soup.find('table') # 假设表格是通过<table>标签定义的 rows = table.find_all('tr') # 查找所有行 for row in rows: cells = row.find_all('td') # 查找当前行的所有单元格 row_data = [] for cell in cells: row_data.append(cell.text) # 提取单元格文本内容 sheet.append(row_data) # 将一行数据写入Excel表格 # 保存Excel文件 workbook.save('table.xlsx') # 将此处替换为你想要保存的文件名和路径
你的代码看起来几乎没有问题,只是需要做一些小的修改。首先,你需要确保安装了 `requests`、`beautifulsoup4` 和 `openpyxl` 这三个库。其次,你需要将 `url` 变量替换为你要爬取的网页的正确地址。最后,你需要将保存的文件名和路径替换为你想要的名称和路径。
```python
import requests
from bs4 import BeautifulSoup
from openpyxl import Workbook
# 发起HTTP请求获取网页内容
url = 'http://yjszs.hfut.edu.cn/2023/0505/c13524a291829/page.htm' # 将此处替换为你要爬取的网页URL
response = requests.get(url)
html = response.text
# 使用BeautifulSoup解析HTML
soup = BeautifulSoup(html, 'html.parser')
# 创建一个Excel工作簿和工作表
workbook = Workbook()
sheet = workbook.active
# 查找表格元素并将其写入Excel表格
table = soup.find('table')
rows = table.find_all('tr')
for row in rows:
cells = row.find_all('td')
row_data = []
for cell in cells:
row_data.append(cell.text.strip()) # 使用 strip() 去除单元格文本中的空白字符
sheet.append(row_data)
# 保存Excel文件
workbook.save('table.xlsx') # 将此处替换为你想要保存的文件名和路径
```
希望这能帮到你!如果还有其他问题,请随时提问。
阅读全文