Python簡單爬取圖書資訊及入庫
阿新 • • 發佈:2021-10-07
為了完成課堂作業~~~
課堂上老師佈置了一個作業,如下圖所示:
就是簡單寫一個借書系統。
大概想了一下流程,登入——>驗證登入資訊——>登入成功跳轉借書介面——>可檢視自己的借閱書籍以及數量。。。
登入可以很快實現,但借書介面裡的資料怎麼來呢?
不可能百度搜索書籍資訊,然後一條一條來複制貼上吧
所以,我想到了Python。
思路:通過Python爬取指定某讀數平臺,然後將解析的資料直接存到資料庫。
開啟開發者工具,我們可以很快鎖定所要爬取的資訊;
學過jQuery解析庫的,可以發現用pyquery庫選擇對應class屬性,可以很快獲取到需要的資訊;
拿到資料後,使用pymysql將資料存入資料庫,需要提前建立好資料庫和表噢,當然也可以用程式碼實現;
↓
因為該讀數平臺的書籍資訊是動態載入,所以一次可以爬20條,但可以通過迴圈index,來獲取多條資料。或者,也可以通過selenium庫來實現網頁載入自動化,從而拿到所有資料。
# -*- coding=utf-8 -*- from pyquery import PyQuery import requests import pymysql header = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36" } # 獲取html原始碼 def getUrl(url): re = requests.get(url, headers=header) return re # 獲取資料並清洗 def getData(html): doc = PyQuery(html) name = doc(".wr_bookList_item_title") author = doc(".wr_bookList_item_author a") percent = doc(".wr_bookList_item_reading_percent") desc = doc(".wr_bookList_item_desc") lists = [] for i in range(len(name)): try: li = [name[i].text, author[i].text, percent[i].text, desc[i].text] except Exception as e: li = [name[i].text, author[i].text, "null", desc[i].text] lists.append(li) return lists # 連線資料庫,存取資料 def saveDate(lists): db = pymysql.connect( host='127.0.0.1', port=3306, user='root', password='zhy123', database='mybooks', charset='utf8' ) cursor = db.cursor() for num in lists: sql = "insert into books_copy1(title,author,percent,prec) " \ "VALUES ('%s','%s','%s','%s')" % (num[0], num[1], num[2], num[3]) try: cursor.execute(sql) db.commit() except Exception as e: print(e) db.rollback() print("儲存成功!!!") def main(): url = 'https://weread.qq.com/web/category/700002' html = getUrl(url).content.decode('utf-8') lists = getData(html) # print(lists) saveDate(lists) if __name__ == '__main__': main()
注意了,直接複製此程式碼執行,是會報錯的喔!
需要確定自己電腦是否已經安裝了mysql,其次修改程式碼裡的使用者名稱和密碼,最後是資料庫和表的名稱喔。
我的簡單借書小系統⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄
登入介面:
借書介面:
我的借書介面:
前端介面有些馬虎了,湊合湊合O(∩_∩)O~
那就這樣吧 byebye~~~
Collection:因為這些東西是非常簡單的。不要抱怨自己學不會,那是因為你沒有足夠用心。