乙個簡單的爬蟲加sqlalchemy ORM例項

2021-10-04 07:07:02 字數 2589 閱讀 6152

主要思路:

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...