response

scrapy(网络爬虫)———CrawlSpider(规则爬虫)

孤街浪徒 提交于 2020-02-24 03:00:14
CrawlSpider(规则爬虫) 一 .简介: 它是Spider的派生类,Spider类的设计原则是只爬取start_url列表中的网页, 而CrawlSpider类定义了一些规则(rule)来提供跟进link的方便的机制,从爬取的网页中获取link并继续爬取的工作更适合。 二.创建爬虫命令: 1.前提是已经创建好爬虫项目了,若没有创建好项目,请使用 scrapy startproject 项目名 进入项目目录 2.在项目目录下执行创建规则爬虫:scrapy genspider -t crawl 爬虫名称 爬取域名 三.在pycharm中编写规则爬虫文件 1. 爬虫文件中导入的 Link Extractors: class scrapy.linkextractors.LinkExtractor 作用是: 每个LinkExtractor有唯一的公共方法是 extract_links(),它接收一个 Response 对象, 类中定义了 Response中的链接的提取规则, 并返回一个 scrapy.link.Link 对象, 返回的是符合链接匹配对象的列表 。 Link Extractors要实例化一次,并且extract_links 方法会根据不同的 response 调用多次提取链接。 2. Link Extractors 中的主要参数: allow:满足括号中“正则表达式

Django----中间件详解

假装没事ソ 提交于 2020-02-24 02:09:06
在http请求 到达视图函数之前 和视图函数return之后,django会根据自己的规则在合适的时机执行中间件中相应的方法。 中间件的执行流程 1、执行完所有的request方法 到达视图函数。 2、执行中间件的其他方法 3、经过所有response方法 返回客户端。 注意:如果在其中1个中间件里 request方法里 return了值,就会执行当前中间件的response方法,返回给用户 然后 报错。。不会再执行下一个中间件。 自定义中间件 1.在project下随便创建一个py文件 from django.utils.deprecation import MiddlewareMixin class Middle1(MiddlewareMixin): def process_request(self,request): print("来了") def process_response(self, request,response): print('走了') 2、在setings文件中 注册这个 py文件 django项目的settings模块中,有一个 MIDDLEWARE_CLASSES 变量,其中每一个元素就是一个中间件 MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django

phantomjs的使用

非 Y 不嫁゛ 提交于 2020-02-23 19:07:32
PhantomJS是一个无界面的,可脚本编程的WebKit浏览器引擎。它原生支持多种web 标准:DOM 操作,CSS选择器,JSON,Canvas 以及SVG,同时也提供了处理文件I/O的操作,从而使你可以向操作系统读写文件等。PhantomJS的用处可谓非常广泛,诸如网络监测、网页截屏、无需浏览器的 Web 测试、页面访问自动化等。 1.安装 phantomjs是完全开源的软件,可以直接下载源码编译后安装,也可以直接下载官网上编译好的文件安装。 各平台下的安装文件包地址: windows https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-windows.zip Mac os https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-macosx.zip Linux https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2 下载安装包完毕后,直接解压即可。安装完成之后命令行输入 phantomjs -v 后如果出现版本号即为安装成功。 2.常用的内置对象 1.system:获得系统操作对象,包括命令行参数

视图家族 & 路由组件

给你一囗甜甜゛ 提交于 2020-02-23 12:19:39
目录 视图家族 & 路由组件 视图集与路由组件 基于 GenericAPIView 的十大接口 基于 generics 包下工具视图类的六大基础接口 视图集 路由组件:必须配合视图集使用 自定义路由组件(了解) 上传图片接口 权限 做项目是否要分表管理前后台用户 权限六表 三大认证规则 视图家族 & 路由组件 视图基类:APIView、GenericAPIView 视图工具类:mixins包下的五个类(六个方法) 工具视图类:generics包下的所有GenericAPIView的子类 视图集:viewsets包下的类 GenericAPIView基类(基本不会单独使用,了解即可,但是是高级视图类的依赖基础) 1)GenericAPIView继承APIView,所有APIView子类写法在继承GenericAPIView时可以保持一致 2)GenericAPIView给我们提供了三个属性 queryset、serializer_class、lookup_field 3)GenericAPIView给我们提供了三个方法 get_queryset、get_serializer、get_obj mixins包存放了视图工具类(不能单独使用,必须配合GenericAPIView使用) ​``` CreateModelMixin:单增工具类 create方法 ListModelMixin

Python Scrapy框架

狂风中的少年 提交于 2020-02-23 03:31:50
全局函数 创建新的爬虫文件: Scrapy startproject 文件名 Scrapy version: 查看scrapy版本 Scrapy version -v :可以显示Scrapy依赖库的版本 Scrapy view 查看网址源代码 Scrapy shell 网址 : 测试网址 再输入 response.text 拿到网页的源代码 Scrapy fetch 下载网页源代码 Scrapy bench 运行快速基准测试。 scrapy list 列出spider路径下的spider文件 scrapy edit 文件名字 编辑spider文件 局部函数: 新建一个爬虫 Scrapy genspider 爬虫名字 域名 运行爬虫 Scrapy crawl spider名字 Setting.py加入LOG_LEVEL = ‘WARNING’ 去除日志,只显示抓取结果 LOG_FILE = './log.log’ 将数据保存到log.log中 Item={} Item[‘name’]=Response.xpath().extract() extract():这个方法返回的是一个数组list,,里面包含了多个string,如果只有一个string,则返回[‘ABC’]这样的形式。 Item[‘name’]=Response.xpath().extract_first() extract

爬虫基础(二)

北战南征 提交于 2020-02-23 01:33:21
#爬取百度网页代码: from urllib import request # url = 'http://www.baidu.com'# 我写的 url = 'https://www.baidu.com/' # 我复制的 header = { 'User-Agent' : "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36" } #设置 header是为了让爬虫看起来更像是从正常浏览器访问,防止被禁等等 req = request . Request ( url , headers = header ) response = request . urlopen ( req ) print ( response . read ( ) . decode ( ) ) 以下代码可直接用: from urllib import request from bs4 import BeautifulSoup url = 'https://www.baidu.com' headers = { "Host" : 'www.baidu.com' , "User-Agent" : "Mozilla/5.0 (Windows

第一周学习总结

无人久伴 提交于 2020-02-22 14:42:03
这一周我学习了python的一些基本语法和函数 以及如何从不同类型的网站爬虫 爬取了丁香园-的疫情数据还有拉勾网,猫眼的一些信息 学到两种方法,一种是xpath方法,一种是正则表达式 xpath import requests from lxml import etree import xlwt url='http://www.beijing.gov.cn/hudong/hdjl/com.web.consult.consultDetail.flow?originalId=AH20021900306' headers = { "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36" } response=requests.post(url,headers=headers) res_html=etree.HTML(response.text)//将爬取出的数据解析为要xpath的形式 dd_list=res_html.xpath('//*[@id="f_baner"]/div[1]/div[1]/div[2]/strong/text()')[0].strip() print(dd

拦截器-interceptors

馋奶兔 提交于 2020-02-22 12:02:12
什么是拦截器: 拦截器是 axios 向服务器端发送 请求 和 响应 回来所经历的两道关口 请求拦截器: axios每次 开始 请求的时候先执行此处逻辑,在这个地方可以给axios做出发前的配置,也可以做出发前的检查工作,检查ok的情况下就开始想服务器端发请求 1 // 请求拦截器 2 axios.interceptors.request.use(function (config) { 3 // 放置业务逻辑代码 4 return config; 5 }, function (error) { 6 // axios发生错误的处理 7 return Promise.reject(error); 8 }); 响应拦截器: axios 完成 与服务端交互回到客户端后就执行此逻辑,在这个地方可以做一些后续收尾事宜,例如 判断axios请求是否成功,或相关数据过滤操作 // 响应拦截器 axios.interceptors.response.use(function (response) { // 放置业务逻辑代码 // response是服务器端返回来的数据信息,与Promise获得数据一致 return response; }, function (error) { // axios请求服务器端发生错误的处理 return Promise.reject(error); });

药物不良反应数据库信息的下载

。_饼干妹妹 提交于 2020-02-22 11:08:31
需求:如图,我想把不良反应数据库中的每个药品的不良反应相关信息给获取到 点击详细信息之后 分析页面请求,发现是ajax请求,   第一步,我们需要获取详细页面的url,也就是药品ID   第二步,拿到详细页面的url,下载页面   第三步,提取页面中的适应症和不良反应,并将数据写入文件 代码 # -*- coding: utf-8 -*- """ @Datetime: 2019/1/11 @Author: Zhang Yafei """ import json import numpy import os from gevent import monkey monkey.patch_all() import gevent from urllib.parse import urljoin import pandas as pd import requests from concurrent.futures import ThreadPoolExecutor from lxml.etree import HTML url_list = [] drug_list = [] def task(page): origin_url = 'http://pharm.ncmi.cn/dataContent/dataSearch.do?did=6' headers = {'User-Agent':

解决jsp的中文乱码问题

て烟熏妆下的殇ゞ 提交于 2020-02-22 07:00:29
1, JSP程序存在有与Servlet程序完全相同的中文乱码问题, response对象的编码:response.setChar 告诉浏览器要使用什么编码来解析输给它的数据:response.setHeader() request对象的编码问题 2, JSP引擎将JSP页面翻译成Servlet源文件时也可能导致中文乱码问题 2-1:如果JSP源文件中没有说明它采用的字符集编码,JSP引擎会使用默认ISO8859-1字符集编码将jsp文件翻译成servlet。(这时如果jsp文件中有中文,那么翻译后的servlet会出现中文乱码) 2-2:Jsp文件可通过page指令的pageEncoding属性来说明jsp源文件本身数据的编码: Jsp源文件保存在硬盘上时(即jsp源文件本身数据)采用的编码,假设为 utf-8 , 那么必须通过 page 指令的pageEncoding 属性 来 标识, 这个标识同时也通知jsp引擎要采用utf-8编码将这个jsp文件翻译成一个servlet, 如何解决JSP 引擎翻译JSP 页面时的中文乱码问题 使用page指令的 pageEncoding 属性 :指定jsp引擎要使用什么码表将硬盘上的jsp文件翻 译成servlet 使用page指令的 contentType 属性(该属性与 response.setContentType() 方法作用一样):