如何分解Beautifulsoup中的HTML元素以将它们插入MySQL数据库表中?

2024-06-28 15:40:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Beautifulsoup从一个网站上抓取文本信息。如何只提取select文本,以便将所选文本输入MySQL数据库?你知道吗

我试过各种方法来拉文本字符串,但我没有任何运气。我得到想要的输出,只是不知道如何消除不需要的项目

from bs4 import BeautifulSoup
import urllib.request, urllib.parse, urllib.error

html_url = 'https://www.nwk.usace.army.mil/Locations/District-Lakes/Pomme-de-Terre-Lake/Daily-Lake-Info-2/' 

html_doc = urllib.request.urlopen(html_url).read() 

soup = BeautifulSoup(html_doc, 'html.parser')

pageNav = soup.find(class_= 'Normal')

pageSub = pageNav.find_all('p')

for strong_tag in soup.find_all('strong'):
    print (strong_tag.text, strong_tag.next_sibling)

我想限制和拉四个项目到一个MySQL数据库:日期,昨天的高,24小时低,湖面温度。以下是我目前的结果:

日期:2019年4月3日 正常水池标高:839.00 湖面高程:843.53 24小时。变化:+0.14' 排放至Pomme de Terre河 Pomme de Terre河:每秒50立方英尺 气温无 观察时间:48日上午8:00 昨日高点:64 24小时低点:39 湖面温度:46度(周一和周五上午8点左右拍摄) 河流温度:46(周一和周五上午8:00左右拍摄) 风无 方向:东南 速度:4 峰值:9 降水量:0.00“


Tags: 文本数据库htmltagmysqldefindurllib
1条回答
网友
1楼 · 发布于 2024-06-28 15:40:09

使用此代码:

from bs4 import BeautifulSoup
import urllib.request, urllib.parse, urllib.error

html_url = 'https://www.nwk.usace.army.mil/Locations/District-Lakes/Pomme-de-Terre-Lake/Daily-Lake-Info-2/' 

html_doc = urllib.request.urlopen(html_url).read() 

soup = BeautifulSoup(html_doc, 'html.parser')

pageNav = soup.find(class_= 'Normal')

pageSub = pageNav.find_all('p')

for strong_tag in soup.find_all('strong'):
    if strong_tag.text == "24 Hr. Change:" or strong_tag.text=="Yesterday's High:" or strong_tag.text=="Date:    " or strong_tag.text=="Lake Surface Temperature:":
        print(strong_tag.text, strong_tag.next_sibling)

if语句应该将所有内容排序。我在jupyter笔记本上尝试了这个代码,它成功了。这里唯一的问题是date这个词后面有一些空格。所以现在文件不会打印日期行。你知道吗

要硬编码日期大小写,请改用此代码:

from bs4 import BeautifulSoup
import urllib.request, urllib.parse, urllib.error

html_url = 'https://www.nwk.usace.army.mil/Locations/District-Lakes/Pomme-de-Terre-Lake/Daily-Lake-Info-2/' 

html_doc = urllib.request.urlopen(html_url).read() 

soup = BeautifulSoup(html_doc, 'html.parser')

pageNav = soup.find(class_= 'Normal')

pageSub = pageNav.find_all('p')

date = True
for strong_tag in soup.find_all('strong'):
    if date:
        print(strong_tag.text, strong_tag.next_sibling)
        date = False
    if strong_tag.text == "24 Hr. Change:" or strong_tag.text=="Yesterday's High:" or strong_tag.text=="Lake Surface Temperature:":
        print(strong_tag.text, strong_tag.next_sibling)

相关问题 更多 >