主要思路:
1、先爬取資料到乙個本地檔案中
2、建立乙個orm類,並利用sqlalchemy自動建表
3、讀取本地檔案中的內容,遍歷裡面的資料建立orm物件
4、利用sqlalchemy自動進行資料庫的insert操作
import requests
import time
import json
import datetime
from sqlalchemy import create_engine, column, string, integer, float, date
from sqlalchemy.ext.declarative import declarative_base
# 用於建立乙個orm類
from sqlalchemy.orm import sessionmaker
# mysql會話工廠
engine = create_engine(
'mysql://username:password@ipadress/datebasename'
)# 連線資料庫
base = declarative_base(
)# 獲得乙個base物件,orm類將繼承這個物件
defstrtodate
(s:str
, mode=
'%y/%m/%d')-
> datetime:
# 將str轉為datetime,這裡要轉的是2020/1/2這種
date = datetime.datetime.strptime(s, mode)
return date
class
pmarticle
(base)
: __tablename__ =
'article'
# 表名
id= column(integer, primary_key=
true
, autoincrement=
true
)# 設為自增量、主鍵
title = column(string(
255)
) url = column(string(
255)
) date = column(date)
base.metadata.create_all(engine)
# 若不存在對應的表則自動建立
defmain()
:for i in
range(1
,3):
# 4194
# 以下是乙個簡單的爬蟲,獲取結果為json,然後追加到**資料夾下的j.txt檔案中
# time.sleep(1)
url =
""+str
(i) r = requests.get(url)
.text
j = json.loads(r)
with
open
('j.txt'
,'a'
, encoding=
'utf-8'
)as f:
f.write(json.dumps(j)
+'\n'
) f.close(
)print
('已完成第'
+str
(i)+
'頁')
dbsession = sessionmaker(bind=engine)
# 建立乙個會話工廠
with
open
('j.txt'
,'r'
, encoding=
'utf-8'
)as f1:
filecontent = f1.readlines(
)for i in filecontent:
print
(i) j = json.loads(i)
payload = j[
'payload'
]for j in payload:
singlearticle = j
title = singlearticle[
'title'
] permalink = singlearticle[
'permalink'
] date = strtodate(singlearticle[
'date'])
sesison = dbsession(
)# 建立乙個會話
p = pmarticle(title=title, url=permalink, date=date)
# 建立乙個orm物件
sesison.add(p)
# 增加事務
sesison.commit(
)# 提交事務
sesison.close(
)# 關閉會話
if __name__ ==
"__main__"
: main(
)
乙個簡單的爬蟲例項
獲取網頁html文字內容 usr bin python coding utf 8 import urllib import re 根據url獲取網頁html內容 defgethtmlcontent url page urllib.urlopen url return page.read 從html中...
乙個簡單的Python爬蟲
乙個簡單測試爬蟲的網頁 1.獲取 的html import urllib.request request urllib.request.urlopen str request.read print str 2.返回網頁標題 輸出目標網頁內title標籤內的文字 gettitle 函式返回網頁的標題,...
乙個簡單的JAVA網頁爬蟲
引用內容 public class access implements runnable catch exception e try catch malformedurlexception e catch ioexception e new thread this start public void...