首页 » 99链接平台 » 手把手教你做测开:开发Web平台之图书信息(爬虫图书手把手项目开发)

手把手教你做测开:开发Web平台之图书信息(爬虫图书手把手项目开发)

少女玫瑰心 2024-11-25 15:13:09 0

扫一扫用手机浏览

文章目录 [+]

接下来,我们将分几篇文章来实现对图书的增删改查功能,主要的功能如下:

1.增:新增图书信息

2.删:图书下架

手把手教你做测开:开发Web平台之图书信息(爬虫图书手把手项目开发) 99链接平台
(图片来自网络侵删)

3.改:图书信息的修改

4.查:图书信息的获取

而在本篇中主要介绍图书信息的采集和展示,也就是增删改查中的查询功能。
需要实现以下功能的开发

1.豆瓣图书的爬取和存储

2.豆瓣图书展示功能的前端实现

3.豆瓣图书展示功能的后端实现

4.豆瓣图书展示功能的前端修改

(一). 你愿意手动造“轮子”吗?

首先来思考个问题,如果你是一个测试开发,某天要实现这样一个常规的功能,你会按部就班的手动去写代码吗?对于日常开发来说,时间无疑是非常紧迫的,在这样一个环境下,能手动拷贝的就不要手动去敲,所以正如我上文说的那样,能做CV工程师就做CV工程师,把更多的时间腾出来实现更具挑战性的工作。

我们选择去网上找,如果你打开gitee或者github,会看到非常多的豆瓣爬虫项目,这里面的选择空间很大,根据开发语言、star、以及你最终想要实现的效果来筛选,就让我们一步步开始吧。

(二). 爬虫工程的创建

1.在D盘下创建一个空的目录叫crawler,在这个目录下打开cmd,然后使用git clone

https://gitee.com/jykgl/python-crawler-django-project.git 将项目克隆下来。

2.使用pycharm打开python-crawler-django-project这个目录,这个爬虫项目就加载出来了。

(三). 爬虫工程的介绍

1.topbook:这是一个django项目,它的结构主要是:

app:子应用,下面有模型类models,子路由urls,视图类views等

static:静态目录,主要存放css、js等静态文件

templates:模板目录,下面主要存放html页面

这是一个前段后不分离的项目,因此你会看到html文件里使用了很多模板变量。

对于这个项目,我们只需要使用到里面的模型类对象,其他我们用不到,因为我们自己的图书web系统会实现和它同样的功能。

2.douban:这是一个使用Scrapy框架实现的豆瓣爬虫项目,在这个项目里,我们只需要修改下pipelines.py中的数据库配置方式,将这里的数据库配置改为我们自己的图书web系统的数据库,然后执行后,爬取豆瓣的数据会落入对应的数据库。

(四). 爬虫工程依赖的安装

这里根据作者README.md里面的内容,依次安装好这些依赖:pypiwin32,lxml,twisted,scrapy,Microsoft Visual C++ 14.0以上 编译环境 数据库连接模块,pymysql,django框架,数据库操作的库mysqlclient,这里不做详述,但建议使用pipenv做好环境隔离,避免冲突。

(五). book模型类

将topbook项目app子应用下的models.py中的内容,拷贝到我们项目book子应用下的models.py中。
这里需要注意一下,我删除了部分无关的字段。

from django.db import models

class Book(models.Model):

id = models.AutoField(primary_key=True)

title = models.CharField(max_length=64)

score = models.CharField(max_length=32)

img_src = models.CharField(max_length=64, null=True)

publish_detail = models.CharField(max_length=255)

slogan = models.CharField(max_length=255)

publish_house = models.CharField(max_length=32, null=True)

detail_addr = models.CharField(max_length=255, null=True)

comment_people = models.CharField(max_length=32, null=True)

class Meta:

db_table = 'book'

(六). book数据表迁移

在运行爬虫之前,我们要执行两项操作:1. 创建表; 2. 修改爬虫项目的数据库配置。
我们先来做第一项。
使用makemigrations和migrate命令就可以实现数据表的迁移。

(七). 爬虫项目配置修改

在爬虫项目里,数据库配置是放在pipelines.py文件中,因此我们需要修改以下数据库的连接 host、用户名、密码、数据库名、数据表名:

from itemadapter import ItemAdapter

import urllib.request

import os

import pymysql

class DoubanPipeline:

def process_item(self, item, spider):

info = [item['title'], item['score'], item['publish_detail'], item['slogan'], item['publish_house'], item['img_src'], item['detail_addr'], item['comment_people']]

# 修改点 1:host

# 修改点 2:user、password

# 修改点 3:database

connection = pymysql.connect(host='localhost', user='root', password='123456', database='web-development', charset='utf8')

try:

with connection.cursor() as cursor:

# 修改点 4:表名

sql = 'insert into book (title, score, publish_detail, slogan, publish_house, img_src, detail_addr, comment_people) values (%s, %s, %s, %s, %s, %s, %s, %s)' affectedcount = cursor.execute(sql, info)

print('成功修改{0}条数据'.format(affectedcount))

connection.commit()

except pymysql.DatabaseError:

connection.rollback()

finally:

connection.close()

return item

(八). 执行爬虫项目

爬虫项目的作者在spiders目录下为我们创建了一个爬虫book,因此我们只需要执行scrapy crawl book 就可以爬取豆瓣图书并且存储到我们的数据表book中,但这里有个问题,当爬取到一半的时候,会报错:AttributeError: 'BookSpider' object has no attribute 'make_requests_from_url'。

这是因为新版本的Scrapy框架已丢弃了这个函数,但是并没有完全移除,虽然函数已经移除,但是还是在book.py中用到了它,因此会出现这个问题。
这就需要在book.py的内部重写一下这个方法。

……

由于作者版权要求,仅展示文章的一部分,如需阅读完整版文章,可以私信回复”文章“即可免费获取。

最后:

1)关注+私信回复:“测试”,可以免费领取一份10G软件测试工程师面试宝典文档资料。

2)关注+私信回复:"入群" 就可以邀请你进入软件测试群学习交流~~

标签:

相关文章

慧质兰心作铭文(铭文不在妙想初中生陋室)

花不在美,有水则生。草不在绿,有光则生。天不在与,时不久留。垂柳下街绿,柳枝入帘青。谈笑有人伴,一恍而过。时光滴滴走,孔子云:逝者...

99链接平台 2025-02-09 阅读1926 评论0