一、从小说网站抓取一本小说
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免费测试