url

python爬虫笔记

混江龙づ霸主 提交于 2020-03-23 10:17:18
##爬虫 -通用网络爬虫 其的主要目的是将互联网上的资源下载到本地形成一个镜像备份。类似百度等搜索引擎 -聚焦爬虫 其面向特定需求的爬虫程序,与通用爬虫的区别在于对数据进行筛选尽量爬取相关数据 -爬虫优化 1.尽量减少请求次数 2.web页面不好爬取时爬app和h5页面(手机) ##HTTP和HTTPS --超文本传输协议 HTTP 端口80 HTTPS时加入了ssl安全传输协议 端口443 ##get请求方式获取 ---get方式一般用于向服务器获取数据 --parse用于url编码 实际使用是将url地址与想要查询的数据信息拼接形成完整地url 例如 # https://tieba.baidu.com/f?ie=utf-8&kw=火影忍者&fr=search # https://tieba.baidu.com/f?kw=火影忍者&ie=utf-8&pn=50 base_url = 'http://wwww.baidu.com/f?' # 搜索信息关键字 wd = input('搜索信息关键字') pn = input('pn值') q_data = { 'wd' = wd, 'pn' = pn, } # 对q_data进行编码使用parse模块 q_data = parse.urlencode(q_data) # 拼接url full_url = base_url + q

接口封装

☆樱花仙子☆ 提交于 2020-03-23 10:14:18
前端的动态数据交互离不开服务端提供的接口,在一个前后端分离的中后台项目中,接口的请求和响应是必不可少的。 那么在架构一个中后台系统的时候,我们如何有效的管理和封装接口,提高项目接口调用的统一性、可维护性,以及在后端接口还没有开发完成,在仅有契约的基础上我们如何有效的模拟接口的调用呢? 接下来便会对以上问题提供个人解决方案供大家参考。 1. 不封装存在的问题 首先谈谈接口封装,因为我们使用的请求库是 axios,所以接下来的示例都以 axios 来举例。 那么在没有封装接口的项目中,你可能随处可见接口的直接调用方法,比如像这样: axios.post('/user', { firstName: 'zhang', lastName: 'san' }) .then(function (response) { console.log(response); }); ... axios.get('/user?ID=12345') .then(function (response) { // handle success console.log(response); }); 复制代码 这样的写法会存在一些缺点,主要有以下几点: 接口 url 没有统一管理,散落在项目的各个地方 如果需要在接口调用成功和失败时做一些处理,需要在每个地方进行添加 特殊请求头以及取消请求方法需要单独进行编写 2.

requests

拥有回忆 提交于 2020-03-23 09:54:41
requests: 发送HTTP请求,接收响应 1. 如果浏览器能访问,requests不能访问,最坏是把浏览器请求头部,都写到requests请求头部中 import requests from bs4 import BeautifulSoup r1 = requests.get( url='https://dig.chouti.com/', headers={ # 注意,如果浏览器能访问,requests不能访问,最坏是把浏览器请求头部,都写到次处 'user-agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36' # 伪装成Chrome浏览器访问 } ) soup = BeautifulSoup(r1.text,'html.parser') # 标签对象 content_list = soup.find(name='div',id='content-list') # print(content_list) # [标签对象,标签对象] item_list = content_list.find_all(name='div',attrs={'class':'item'}) for item

手机移动端接口

孤街浪徒 提交于 2020-03-23 09:08:30
在项目开发中,可能移动端需要请求查询数据或者向数据表中插入数据,这时需要编写接口给移动端调用。 //查询 @RequestMapping("/query") //通过request传递请求参数 public String query(Page page, HttpServletRequest request) { Map<String, Object> keyMap = new HashMap<String, Object>(); List<Map<String, Object>> rtnList = new ArrayList<Map<String, Object>>(); try { 获取查询条件 keyMap.put("carNumber", request.getParameter("CarsNo")); List<Map<String, Object>> vehicleRegulationList = vehicleRegulationService.findAll(page, keyMap); for(Map<String, Object> vehicleRegulation : vehicleRegulationList) { Map<String, Object> map = new HashMap<>(); map.put("CarsNo",

全新Web开发风格-REST架构介绍

折月煮酒 提交于 2020-03-23 03:36:38
REST架构风格是全新的针对Web应用的开发风格,是当今世界最成功的 互联网 超媒体分布式系统架构,它使得人们真正理解了Http 协议 本来面貌。随着REST架构成为主流技术,一种全新的 互联网 网络应用开发的思维方式开始流行。     REST是什么      REST是英文Representational State Transfer的缩写,中文翻译为“表述性状态转移”,他是由Roy Thomas Fielding博士在他的论文 《Architectural Styles and the Design of Network-based Software Architectures》中提出的一个术语。REST本身只是为分布式超媒体系统设计的一种架构风格,而不是标准。     基于Web的架构,实际上就是各种规范的集合,这些规范共同组成了Web架构。比如Http 协议 ,比如客户端 服务器 模式,这些都是规范。每当我们在原有规范的基础上增加新的规范,就会形成新的架构。而REST正是这样一种架构,他结合了一系列的规范,而形成了一种新的基于Web的架构风格。     传统的Web应用大都是B/S架构,它包括了如下一些规范 .客户- 服务器 。     这种规范的提出,改善了用户接口跨多个平台的可移植性,并且通过简化服务器组件,改善了系统的可伸缩性。最为关键的是通过分离用户接口和数据

XMLHTTPRequest状态status完整列表

北战南征 提交于 2020-03-23 02:32:23
AJAX中请求远端文件、或在检测远端文件是否掉链时,都需要了解到远端服务器反馈的状态以确定文件的存在 与否。 当然,在我们平常浏览网页时,也会发现一些文件不存在时显示为“404错误”,这就是常见的Http请求状态(status)   Web服务器响应浏览器或其他 客户 程序的请求时,其应答一般由以下几个部分组成:一个状态行,几个应答头,一个空行,内容文档。下面是一个最 简单 的应答:    状态行包含HTTP版本、状态代码、与状态代码对应的简短说明信息。在大多数情况下,除了Content-Type之外的所有应答头都是可选的。但 Content-Type是必需的,它描述的是后面文档的MIME类型。虽然大多数应答都包含一个文档,但也有一些不包含,例如对HEAD请求的应答永远 不会附带文档。有许多状态代码实际上用来标识一次失败的请求,这些应答也不包含文档(或只包含一个简短的错误信息说明)。   当用户试图通过 HTTP 访问一台正在运行 Internet 信息服务 (IIS) 的服务器上的内容时,IIS 返回一个表示该请求的状态的数字代码。状态代码可以指明具体请求是否已成功,还可以揭示请求失败的确切原因。 1xx - 信息提示 这些状态代码表示临时的响应。客户端在收到常规响应之前,应准备接收一个或多个 1xx 响应。 ·0 - 本地响应成功。  · 100 - Continue

GET请求和POST请求简单说明

有些话、适合烂在心里 提交于 2020-03-23 00:43:17
一.概述 * HTTP/1.1协议共定义了8中请求方法:OPTIONS, HEAD, GET, POST, PUT, DELETE, TRACE, CONNECT. * GET方法和POST是我们使用最频繁的网络请求方法。 * GET和POST在应用场合有什么区别呢? * GET方法向指定资源发出请求,发送的消息显示的跟在URL后面,用户信息不安全,并且传送信息量有限。(如下所示,在请求中能看到用户名和密码) http://localhost:8080/logandreg/logreg?name=wyg&pwd=1992 * 如果仅仅是向服务器索要数据,没有参数,使用GET比较方便。(如下所示) http://www.baidu.com * POST传送的信息量大,并且传送的信息是被隐藏的,传送信息比较安全,如果向服务器传送数据,建议使用POST. 二.GET请求网络数据(同步,异步) * 如上所述,GET方法可以向指定资源发出请求,比如我们想再网络上请求一张图片在本地上显示,使用GET方法就非常的方便。 * GET请求分为同步请求和异步请求,一般情况下,为了良好的用户体验,我们都使用异步请求。 GET请求 1.设置请求路径 2 NSString *urlStr=[NSString stringWithFormat:@"http://192.168.1.53:8080

Android网络开发之HttpURLConnection

拥有回忆 提交于 2020-03-22 21:11:05
http是一个可靠的传输,建立在TCP/IP连接之上,缺省端口是80,其他端口号也可以用。Android可以用HttpURLConnection或HttpClient接口来开发http程序。 http通信使用最多的是Get和Post。Post和Get的不同之处在于Get的参数放在URL字串中,而Post的参数放在http请求数据中。 HttpURLConnection继承自URLConnection,都是抽象类,无法直接实例化对象。其对象主要通过URL的openConnection方法获得。 openConnection方法只创建URLConnection或HttpURLConnection实例,但是不进行真正的连接操作,并且每次openConnection都创建一个新的实例。 在连接之前,可以设置一些属性,比如超时时间等。 HttpURLConnection默认使用Get方法,如果要使用Post方法,则需要使用setRequestMethod方法。 // 示例代码:通过Post方式发送请求 URL url = new URL(“http://www.google.com”); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); // 设置输入/出流 conn.setDoOutput(true);

Tomcat学习笔记

一曲冷凌霜 提交于 2020-03-22 18:16:49
基本概念: tomcat是一个轻量级web应用服务器,servlet的容器,底层是Socket的一个程序 目的: 学过html,css之后,我们会知道自己写的页面只能自己访问,别人不能远程访问,Tomcat就是提供能够让别人访问自己写的页面的一个程序 适用场景: 中小型系统和并发访问用户不是很多的场合 目录结构: 运行流程: 图解简易版: 具体版: 1.通过脚本startup,调用java命令,参数时tomcat自己的main主函数 2.在main中处理逻辑,包括:解析webapps下所有的项目(绑定项目和项目url) (1)通过web.xml找到servlet配置信息,通过反射初始化servlet(有了new出来的servlet对象-->指项目中实现HServlet的相关接口的类对象 (a)检查web.xml中是否有metadata-complete=‘true’,默认是false (b)如果=false,还要进一步处理:target/artifactId-version/WEB-INF/calsses 中的所有类搜索servlet相关注解 (c)通过反射实例化这些servlet相关的 (2)调用 servlet 的 init() 进行初始化操作(ps:servlet生命周期中只初始化一次) (3)绑定对应项目的servlet和url(ps:url会在项目中的web.xml中设置

python爬虫快递查询系统(源码)

元气小坏坏 提交于 2020-03-22 17:50:39
import requestsimport jsondef get_express_type(postid): '''根据快递单号来智能判断快递类型''' url = 'http://www.kuaidi100.com/autonumber/autoComNum?resultv2=1&text=%s' % (postid,) # 这里可以用元组这样保证的数据的安全性 # 把构造后的url通过requests请求来得到相应的数据是一个json数据 rs = requests.get(url) # 再用json库中的loads数据来进行分析得到一个可用字典的方式来访问 kd_type_info = json.loads(rs.text) kd_type = kd_type_info['auto'][0]['comCode'] return kd_type, postiddef execute_data_query(type, postid): '''执行数据查询程序''' # 通过构造一个真正的url地址 url = 'http://www.kuaidi100.com/query?type=%s&postid=%s' % (type, postid) # 这里可以用元组这样保证的数据的安全性 # 把构造后的url通过requests请求来得到相应的数据是一个json数据 rs =