response

爬虫(十八):Scrapy框架(五) Scrapy通用爬虫

余生颓废 提交于 2020-01-07 15:59:10
1. Scrapy通用爬虫 通过Scrapy,我们可以轻松地完成一个站点爬虫的编写。但如果抓取的站点量非常大,比如爬取各大媒体的新闻信息,多个Spider则可能包含很多重复代码。 如果我们将各个站点的Spider的公共部分保留下来,不同的部分提取出来作为单独的配置,如爬取规则、页面解析方式等抽离出来做成一个配置文件,那么我们在新增一个爬虫的时候,只需要实现这些网站的爬取规则和提取规则即可。 这一章我们就来了解下Scrapy通用爬虫的实现方法。 1.1 CrawlSpider 在实现通用爬虫之前,我们需要先了解一下CrawlSpider,官方文档: https://scrapy.readthedocs.io/en/latest/topics/spiders.html#crawlspider 。 CrawlSpider是Scrapy提供的一个通用Spider。在Spider里,我们可以指定一些爬取规则来实现页面的提取,这些爬取规则由一个专门的数据结构Rule表示。Rule里包含提取和跟进页面的配置,Spider会根据Rule来确定当前页面中的哪些链接需要继续爬取、哪些页面的爬取结果需要用哪个方法解析等。 CrawlSpider继承自Spider类。除了Spider类的所有方法和属性,它还提供了一个非常重要的属性和方法。 rules,它是爬取规则属性,是包含一个或多个Rule对象的列表

request 模块学习

耗尽温柔 提交于 2020-01-07 15:39:04
1、get请求 import requests def lx(url,headers): response = requests.get(url=url ,headers=headers) if response.status_code == 200: print(response.text) return None if __name__ == '__main__': url = 'https://www.9k9k.com/shouyou/rmjh_98915.html' headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36'} lx(url=url,headers=headers) 2、post请求 impot request def login(email, password, _xsrf, captcha): data = { '_xsrf': _xsrf, 'password': password, 'email': email, 'captcha': captcha } login_url = 'https://www.zhihu.com

requests

我怕爱的太早我们不能终老 提交于 2020-01-07 13:36:37
目录 About requests.request() 请求接受的参数 响应对象支持的属性 requests.get() params参数 headers cookies 文件下载 requests.post() data参数 文件上传 json参数 requests.head() requests.put() requests.patch() requests.delete() requests.Session() 证书验证 代理设置 超时 认证设置 异常处理 返回Python目录 返回测试目录 返回随笔首页 About 回到顶部 环境:win10 + Python3.6 + PyCharm requests库是Python语言编写,基于urllib,采用Apache2 Licensed开源协议的HTTP库。 它相对于urllib更加方便,大大节约了代码量,完全满足了HTTP测试相关需求。 关于urllib: https://www.cnblogs.com/Neeo/articles/11520952.html 安装 pip install requests pip install -i https://pypi.doubanio.com/simple/ requests 使用之前需引入。 测试安装是否成功 import requests # 回车不报错就算安装成功

@WebFilter注解

喜夏-厌秋 提交于 2020-01-07 13:14:36
@WebFilter注解 地址: https://blog.csdn.net/dummyo/article/details/103552283 @WebFilter @WebFilter 用于将一个类声明为==过滤器==,该注解将会在部署时被容器处理,容器将根据具体的属性配置将相应的类部署为过滤器。该注解具有下表给出的一些常用属性 ( 以下所有属性均为可选属性,但是 value、urlPatterns、servletNames 三者必需至少包含一个,且 value 和 urlPatterns 不能共存,如果同时指定,通常忽略 value 的取值 ) @WebFilter 的常用属性 示例 package com.xc.common.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation

爬虫第四天--概念

依然范特西╮ 提交于 2020-01-07 13:09:09
线程池 导包:from multiprocessing.dummy import Pool pool.map(callback,alist) 让callback可以异步将alist中的列表元素进行某种形式的操作 注意事项:callback必须要有一个参数、 主要是被应用在耗时的操作 单线程+多任务的异步协程 特殊函数 如果一个函数的定义被async关键字修饰后,则该函数就是一个特殊的函数。 特殊之处: 该函数被调用后函数内部的实现语句不会被立即执行。 该函数会返回一个协程对象 协程: 对象。当特殊的函数被调用后,该函数就会返回一个协程对象。 协程对象 == 特殊函数 任务对象 就是对协程对象的进一步封装(就是一个高级的协程对象) 任务对象==协程对象==特殊函数 绑定回调: task.add_done_callback(funcName) funName这个回调函数必须要带一个参数,这个参数表示的就是当前的任务对象 参数.result():表示的就是当前任务对象对应的特殊函数的返回值 事件循环对象: 创建事件循环对象 asyncio.get_event_loop() 需要将任务对象注册到该事件循环对象中且启动事件循环 loop.run_until_complete(task) 等待(await):当阻塞操作结束后让loop回头执行阻塞之后的代码 挂起(wait())

记录一个处理Excel的新插件:Alibaba Easy Excel

喜欢而已 提交于 2020-01-07 10:27:14
EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。 github地址: https://github.com/alibaba/easyexcel 读Excel DEMO代码地址: https://github.com/alibaba/easyexcel/blob/master/src/test/java/com/alibaba/easyexcel/test/demo/read/ReadTest.java 123456789101112 /** * 最简单的读 * <p>1. 创建excel对应的实体对象 参照{@link DemoData} * <p>2. 由于默认一行行的读取excel,所以需要创建excel一行一行的回调监听器,参照{@link DemoDataListener} * <p>3. 直接读即可 */@Testpublic void simpleRead() { String fileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx"; // 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭 EasyExcel.read(fileName, DemoData.class,

优化建议解决方案:未设置max-age或expires

ⅰ亾dé卋堺 提交于 2020-01-07 08:20:15
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 网页的缓存是由 HTTP 消息头中的 “Cache-control” 来控制的,常见的取值有 private、no-cache、max-age、must-revalidate 等,默认为private。其作用根据不同的重新浏览方式分为以下几种情况: (1) 打开新窗口 如果指定cache-control的值为private、no-cache、must-revalidate,那么打开新窗口访问时都会重新访问服务器。而如果指定了max-age值,那么在此值内的时间里就不会重新访问服务器,例如: Cache-control: max-age=5 表示当访问此网页后的5秒内再次访问不会去服务器。 (2) 在地址栏回车 如果值为private或must-revalidate(和网上说的不一样),则只有第一次访问时会访问服务器,以后就不再访问。如果值为no-cache,那么每次都会访问。如果值为max-age,则在过期之前不会重复访问。 (3) 按后退按扭 如果值为private、must-revalidate、max-age,则不会重访问,而如果为no-cache,则每次都重复访问 (4) 按刷新按扭 无论为何值,都会重复访问 当指定Cache-control值为“no-cache”时

PHP Response to HTTP Request From Android

狂风中的少年 提交于 2020-01-07 08:12:06
问题 I've searched alot to find a way to send HTTP Response to Android Application that sends HTTP Request with Username and Password My problem is I want to take the username and password from android application and send back the values for that user from 3 columns (toggle1,toggle2,toggle3) in the database All examples I've seen now only send 1 or 0 just for checking username and password if it's correct or not but I need to send also Columns Data from Database, I Prefer it's not JSON Activity

Django的View(视图)

梦想的初衷 提交于 2020-01-07 07:05:03
目录 Django的View(视图) FBV和CBV Request对象和Response对象 request对象 Response对象 JsonResponse Django的View(视图) 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应。 响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片。 无论视图本身包含什么逻辑,都要返回响应。 代码写在哪里也无所谓,只要它在你当前项目目录下面。除此之外没有更多的要求了——可以说“没有什么神奇的地方”。 为了将代码放在某处,大家约定成俗将视图放置在项目(project)或应用程序(app)目录中的名为 views.py 的文件中。 一个简单的视图 下面是一个以HTML文档的形式返回当前日期和时间的视图: from django.http import HttpResponse import datetime def current_datetime(request): now = datetime.datetime.now() html = "<html><body>It is now %s.</body></html>" % now return HttpResponse(html) Django使用请求和响应对象来通过系统传递状态。

flask之请求响应

杀马特。学长 韩版系。学妹 提交于 2020-01-07 06:56:10
目录 一、请求响应 二、session 三、小案例 一、请求响应 from flask import Flask from flask import request from flask import render_template from flask import redirect from flask import make_response app = Flask(__name__) @app.route('/login.html', methods=['GET', "POST"]) def login(): # 请求相关信息 # request.method 提交的方法 # request.args get请求提及的数据 # request.form post请求提交的数据 # request.values post和get提交的数据总和 # request.cookies 客户端所带的cookie # request.headers 请求头 # request.path 不带域名,请求路径 # request.full_path 不带域名,带参数的请求路径 # request.script_root # request.url 带域名带参数的请求路径 # request.base_url 带域名请求路径 # request.url_root 域名 # request