【SQL】for文でスクレイピングで取得した情報をデータベースに格納する。

前回は、スクレイピングした情報をデータベースに格納することができました。

【python】SQLite3でスクレイピングした記事をデータべースに保存する。

今回は、複数の記事をsqlite3を使用して、データベースに格納していと思います。

import sqlite3
conn = sqlite3.connect("任意の文字.db")
cur = conn.cursor()
import time
import requests
headers = {"User-Agent":"任意の文字"}
from bs4 import BeautifulSoup

url = ["https://lifeinfo-navi.com/p=custom","https://lifeinfo-navi.com/p=1987","https://lifeinfo-navi.com/p=2889"]
cur.execute('CREATE TABLE data(pre TEXT)')
conn.commit()
sql_pre = 'INSERT INTO data(pre) VALUES(?)'

for i in range(1,len(url)):
    res = requests.get(url[i], headers=headers, timeout=3)
    time.sleep(2)
    soup = BeautifulSoup(res.content, "html.parser")
    time.sleep(1)
    soup_str = str(soup)
    time.sleep(1)
    cur.execute(sql_pre, (soup_str,))
    conn.commit()

print(len(url))
print("終了")
db = cur.fetchall()
print(db)

実行したものの、自分の思った通りに実行しているのかわからない。まずはもう少し、簡単に作成して、試してみる。

import sqlite3
conn = sqlite3.connect("sqlite25.db")
cur = conn.cursor()
import time
import requests
headers = {""}
from bs4 import BeautifulSoup

url = ["123","234","345"]
cur.execute('CREATE TABLE data(pre TEXT)')
conn.commit()
sql_pre = 'INSERT INTO data(pre) VALUES(?)'
for i in range(0,len(url)):
    cur.execute(sql_pre, (url[i],))
    conn.commit()

print("終了")
db = cur.fetchall()
print(db)

現在、PyCharm(パイチャーム)を使用しています。ターミナルに「sqlite3 sqite25.db」と入力し、実行する。「.tables」と入力し、テーブルが作成されているか確認してみる。次に「SELECT * from data ;」と入力し、実行してみると思い通りの結果が出た。