首页 > 解决方案 > 使用python用beautifulsoup抓取网页,保存到MySQL

问题描述

我是编程新手,目前我正在学习使用 python 进行网络抓取。您的回答或建议将有助于我的学习过程。

这是HTML的一部分。我想提取包括数据、名称及其用途在内的信息。

<h2>Jan. 2020</h2>
<p><strong>nameA:</strong>&nbsp;usage for somethingA</p>
<p><strong>nameB:</strong>&nbsp;usage for somethingB</p>

<h2>Dec. 2019</h2>
<p><strong>nameC:</strong>&nbsp;usage for somethingC</p>
<p><strong>nameD:</strong>&nbsp;usage for somethingD</p>
<p><strong>nameE:</strong>&nbsp;usage for somethingE</p>

这是我的抓取代码。

from bs4 import BeautifulSoup
import requests
res=requests.get("https://website for my web scraping")
soup=BeautifulSoup(res.text,"html.parser")

start = soup.find('h2', string = "Jan. 2020")
print (start.text)
for elem in start.next_siblings:
     if elem.name == 'h2':
         break
     if elem.name != 'p':
         continue
     print(elem.text)
     
start = soup.find('h2', string = "Dec. 2019")
print (start.text)
for elem in start.next_siblings:
     if elem.name == 'h2':
         break
     if elem.name != 'p':
         continue
     print(elem.text)

代码有效,这是输出。

Jan. 2020
nameA: usage for somethingA
nameB: usage for somethingB
Dec. 2019
nameC: usage for somethingC
nameD: usage for somethingD
nameE: usage for somethingE

但我的主要目标是在下面生成一个包含日期、名称和使用情况的表格,并将数据保存到 MySQL。我该如何做到这一点?

Date        Name    Usage
Jan. 2020   nameA   somethingA
Jan. 2020   nameB   somethingB
Dec. 2019   nameC   somethingC
Dec. 2019   nameD   somethingD
Dec. 2019   nameE   somethingE

该网站会定期更新一次,并将添加一组新数据(例如 2020 年 3 月)并取出一组旧数据(例如 2019 年 11 月)。如何调整 python 代码以反映网站变化?

标签: pythonmysqlcsvweb-scrapingbeautifulsoup

解决方案


推荐阅读