毕业设计 基于python的网络爬虫

768次阅读
没有评论

一、从小说网站抓取一本小说

import urllib2:python库,提供一系列针对url的操作方法

import re:re正则表达式,提供了一系列针对正则表达式的方法

BeautifulSoup4库:from bs4 import BeautifulSoup

BeautifulSoup4是一个从html或者xml中提取数据的py库

二、爬取西安工业大学的就业管理系统

http://jy.51uns.com:8022/Pro_StudentEmploy/StudentJobFair/Zhaoping.aspx?WorkType=0

爬去之后写进mysql数据库中(MySQLdb用于和mysql建立连接,相当于一个驱动);注意:python3装不上这个驱动,python3需要使用第三方库

1、详细情形:(1)运用Ajax异步交互方法,把上面的内容归为两类(静态内容:不需要改变;动态交互:会改变的,从数据库中读取的,需要维护的信息,如上述的招聘信息,会动态发生改变)

第一步:打开这个url时,访问服务器端指定服务,获取静态资源,渲染显示页面

第二步:使用Ajax异步交互,根据数据获取的url,获取招聘信息等动态资源,渲染显示

异步交互的好处:页面无需刷新就可以动态改变上一页和下一页【因为有一个网址是专门来进行服务器交互的,用户传递参数,根据参数选择,动态改变网页的内容。(用Ajax异步交互方法动态,从服务器端获取数据,用前端的编程语言动态的改变页面)】

打开该网站,邮件查看,选择network,刷新页面,即可以看到全部的交互过程

毕业设计毕业设计

筛选出XHR类型

毕业设计毕业设计

选中剩下筛选剩下的五个元素中的任意一个后,选择header,可以查看到请求的全部信息

毕业设计毕业设计

选中response,点击按钮,查看是否为招聘信息,获得含有招聘信息的url:

毕业设计毕业设计

拿到这些招聘信息的内容,并且对这些招聘信息进行处理

(2)点击招聘信息详情页并且分析:

1)url:

2)分析:Id必须不同:根据Id可以获取对应的打开方式,获取招聘信息内容

xml:轻量级的数据交互方式,标签化的封装键值对,出现于json之前

json格式:更加轻量化的数据交互方式。把数据打包压缩成字符串进行传输,在接收方获取到字符串之后,解压还原成原本数据格式,提高了数据传输效率【引用import json】

json.loads()把数据解压还原成python的数据格式

json.dumps()把python的数据格式压缩成json格式

(3)招聘信息详情页的url

毕业设计毕业设计

毕业设计毕业设计

可以 发现可以通过更改id,获取不同的招聘详情信息

三、使用flask建立http框架

1、实现http的方式:

(1)自己动手写一个:http框架的开发,运行在某一个端口上,访问网址时,调用自己的http服务器

(2)使用现成的http服务器:下载软件后,还有一些配置项,前后端分离的开发方式,可以借助现有的http服务器发布html页面实现;

也可以使用flask自己开发一个http服务器运行在指定的端口上,接收request请求,返回指定需要返回的东西。

2、实现:

一一对应的关系

WSGI:一种规范,规定了http服务器如何和一个python程序交互:Django和flask严格遵守这个协议

Django:最强大的框架,功能最齐全,应用最广泛,但是结构也很复杂

flask:超轻量级框架,根据需求随意定制

web.py:轻量级框架

(1)flask框架:遵循web框架设计理念

Model:模型层 专注于和数据库交互,操作数据库

View:视图层 显示给用户看的界面 html相关,用来展示前端页面

Control层:控制层,用来实现我们的各项功能逻辑

大多数情况下,html和服务器交互是通过表单提交

(2)框架的映射机制:

框架最基础的映射机制是路由映射:@app.route("url")相当于一个route map,在其中写了一些文件,可以只写一个文件,也可以写多个文件。可以直接输入ip加域名加函数名在浏览器中,进行访问。url不之一个,每一个页面都会对应一个url服务(此时只需要在不同的应用上写函数并且进行绑定,不同函数之间的网址url必须唯一,是一一映射的。)

给路由取名字,是一个唯一标识,可以通过在根路径下追加名字,从而找到指定的路径。在浏览器中可以据此找到指定的路径

2)框架结构的问题:写一个templates目录,把html文件目录写在下面

静态资源存放路径:static:存放所有的静态文件:css文件,图片文件,音视频文件……:通过访问static路径(网址加static加文件名)就可以访问,把这下面的所有文件都当作了静态资源文件

注意:路由:相当于写了一个文件

url不止一个,每个页面都要对应一个服务

不能在函数里面返沪应用层,控制内容;规定的存放路径为templates必须调用此目录模板(前端)。

static:存放所有的静态资源

(3)get和post的交互,如何利用这两种方法提交一个表单。单独的get方法则不用写了,默认为get方法;request.args是一个字典(在get方法下取的),一个列表或一个元组里面一一对应两个值,可以转换为字典。request.form在post方法下取。

1)get方法通过在uel后面追加键值对 key=value的方式来进行传参

request.args.get(key)

2)post方法通过表单提交数据

request.form.get(name)

神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试

相关文章:

版权声明:Python教程2022-10-24发表,共计2224字。
新手QQ群:570568346,欢迎进群讨论 Python51学习