为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕森卡 2021-12-29 19:26:27
我正在使用 Beautifulsoup 从网站上抓取文本信息。如何仅抓取选择的文本,以便将所选文本输入到 MySQL 数据库?我尝试了各种方法来拉文本字符串,但我没有任何运气。我得到了想要的输出,只是不知道如何消除不需要的项目。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'):    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"
查看完整描述

1 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

使用此代码:


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 notebook 中尝试了这段代码,它奏效了。这里唯一的问题是日期一词后面有一些空格。所以现在文件不会打印日期行。


要对日期大小写进行硬编码,请改用以下代码:


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)


查看完整回答
反对 回复 2021-12-29
  • 1 回答
  • 0 关注
  • 177 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信