标签:name author Python text lists 爬取 num 借书 入库
课堂上老师布置了一个作业,如下图所示:
就是简单写一个借书系统。
大概想了一下流程,登录——>验证登录信息——>登录成功跳转借书界面——>可查看自己的借阅书籍以及数量。。。
登录可以很快实现,但借书界面里的数据怎么来呢?
不可能百度搜索书籍信息,然后一条一条来复制粘贴吧
所以,我想到了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~~~
标签:name,author,Python,text,lists,爬取,num,借书,入库 来源: https://www.cnblogs.com/echohye/p/15376831.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。