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

我正在使用 Beautifulsoup 从网站上抓取文本信息。如何仅抓取选择的文本,以便将所选文本输入到 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 立方英尺 气温 无 8:00 am 48 昨天最高:64 24 小时最低:39 湖面温度:46(周一拍摄)和星期五大约上午 8:00)河流温度:46(星期一和星期五大约上午 8:00 拍摄)无风方向:东南速度:4 峰值:9 降水:0.00"


慕森卡
浏览 178回答 1
1回答

有只小跳蛙

使用此代码:from bs4 import BeautifulSoupimport urllib.request, urllib.parse, urllib.errorhtml_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 notebook 中尝试了这段代码,它奏效了。这里唯一的问题是日期一词后面有一些空格。所以现在文件不会打印日期行。要对日期大小写进行硬编码,请改用以下代码:from bs4 import BeautifulSoupimport urllib.request, urllib.parse, urllib.errorhtml_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 = Truefor 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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python