response

Python爬虫连载17-ItemPipeLine、中间件

折月煮酒 提交于 2020-03-26 02:00:06
一、ItemPipeLine 1.爬虫提取出的数据存入item之后,item中保存的数据需要进一步处理,比如:清洗,去重,存储等 2.pipeline需要process_item函数 (1)process_item​:spider提出来的item作为参数出入,同时传入的还有spider;此方法是必须要实现的​;必须返回一个item对象,被丢弃的item不会被之后的pipeline处理 (2)__init__:构造函数 进行一些必要的参数初始化 (3)open_spider(spider) spider对象被开启的时候调用 (4)close_spider(spider) spider对象被关闭的时候调用 3.Spider (1)对应的是文件夹spiders下的文件 (2)__init__:初始化爬虫的名称,start_urls列表 (3)start_requests:生成Requests对象嫁给Scrapy下载并返回response (4)parse:根据返回的response解析出相应的item,item自动进入到pip​eline;如果需要,解析出url,url自动交给requests模块,一直循环下去 (5)start_request​:此方法仅能被调用一次,读取start_urls内容并启动循环过程 (6)​name:设置爬虫的名字 (7)start_urls

Python爬虫入门之三urllib库的基本使用

半腔热情 提交于 2020-03-25 20:54:35
前言 所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地。在Python中有很多库可以用来抓取网页,我们先学习urllib。 注:此博客开发环境为python3 urlopen 我们先来段代码: # urllib_urlopen.py # 导入urllib.request import urllib.request # 向指定的url发送请求,并返回服务器响应的类文件对象 response = urllib.request.urlopen("http://www.baidu.com") # 类文件对象支持 文件对象的操作方法,如read()方法读取文件全部内容,返回字符串 html = response.read() # 打印字符串 print(html) 执行写的python代码,将打印结果: python3 urllib_urlopen.py ** 实际上,如果我们在浏览器上打开百度主页, 右键选择“查看源代码”,你会发现,跟我们刚才打印出来的是一模一样。也就是说,上面的4行代码就已经帮我们把百度的首页的全部代码爬了下来。** 一个基本的url请求对应的python代码真的非常简单。 Request 在我们第一个例子里,urlopen()的参数就是一个url地址;但是如果需要执行更复杂的操作,比如增加HTTP报头,必须创建一个 Request

爬虫urllib2库的基本使用

浪子不回头ぞ 提交于 2020-03-25 20:53:44
所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地。 在Python中有很多库可以用来抓取网页, urllib2库基本使用 。 urllib2 是 Python2.7 自带的模块(不需要下载,导入即可使用) urllib2 官方文档: https://docs.python.org/2/library/urllib2.html urllib2 源码: https://hg.python.org/cpython/file/2.7/Lib/urllib2.py urllib2 在 python3.x 中被改为 urllib.request urlopen #coding=utf-8 # 导入urllib2 库 import urllib2 # 向指定的url发送请求,并返回服务器响应的类文件对象 response = urllib2.urlopen("http://www.cnblogs.com/loaderman/") # 类文件对象支持 文件对象的操作方法,如read()方法读取文件全部内容,返回字符串 html = response.read() # 打印字符串 print html 执行写的python代码,将打印结果 实际上,查看网页 右键选择“查看源代码”,会发现,和打印出来的是一模一样。也就是说,上面的4行代码就已经帮我们网页的全部代码爬了下来。

Python爬虫(二)_urllib2的使用

半世苍凉 提交于 2020-03-25 20:53:25
所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地。在Python中有很多库可以用来抓取网页,我们先学习 urllib2 。 urllib2是Python2.x自带的模块(不需要下载,导入即可使用) urllib2官网文档: https://docs.python.org/2/library/urllib2.html urllib2源码 urllib2 在python3.x中被改为 urllib.request urlopen 我们先来段代码: #-*- coding:utf-8 -*- #01.urllib2_urlopen.py #导入urllib2库 import urllib2 #向指定的url发送请求,并返回服务器的类文件对象 response = urllib2.urlopen("http://www.baidu.com") #类文件对象支持文件对象的操作方法,如read()方法读取文件 html = response.read() #打印字符串 print(html) 执行写好的python代码,将打印结果: python2 01.urllib2_urlopen.py 实际上,如果我们在浏览器打上百度主页,右键选择"查看源代码",你会发现,跟我们刚才打印出来的是一模一样的。也就是说,上面的4行代码就已经帮我们把百度的首页的全部代码爬了下来。

content-type header being overwritten during POST request

坚强是说给别人听的谎言 提交于 2020-03-25 19:41:47
问题 I have a web service that is making a HTTP POST request to "abc" API. For the POST request I need to have 3 things in the header , the customer id, secret key and content-type. For this POST request I will also have a raw json object in the request body. Upon successful POST, the abc API will return a response. The issue I'm having is the web service is modifying the "content-type" of the header to "text/xml" automatically even if I have it as "application/json". I have to create a temporary

cookie和代理操作

吃可爱长大的小学妹 提交于 2020-03-25 15:36:00
一, 基于requests模块的cookie操作 引言:有些时候,我们在使用爬虫程序去爬取一些用户相关信息的数据(爬取张三“人人网”个人主页数据)时,如果使用之前requests模块常规操作时,往往达不到我们想要的目的,例如: #!/usr/bin/env python # -*- coding:utf-8 -*- import requests if __name__ == "__main__": #张三人人网个人信息页面的url url = 'http://www.renren.com/289676607/profile' #伪装UA headers={ 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36', } #发送请求,获取响应对象 response = requests.get(url=url,headers=headers) #将响应内容写入文件 with open('./renren.html','w',encoding='utf-8') as fp: fp.write(response.text) - 结果发现,写入到文件中的数据

python网络爬虫之二requests模块

蓝咒 提交于 2020-03-25 15:11:21
requests http请求库 requests是基于python内置的urllib3来编写的,它比urllib更加方便,特别是在添加headers, post请求,以及cookies的设置上,处理代理请求,用几句话就可以实现,而urllib比较繁琐, requests比urllib方便多了,requests是一个简单易用的http请求库。 官方网站是: 简单实例: import requests response = requests.get("https://www.baidu.com/") print(type(response)) print(response.status_code) print(type(response.text)) print(response.text) print(response.cookies) 这样我们就很方便的把请求的cookies获取出来了。 各种请求方式: import requests requests.get("http://httpbin.org/get") requests.post("http://httpbin.org/post") requests.put("http://httpbin.org/put") requests.delete("http://httpbin.org/delete") requests

将GridView中的数据导出到EXCEL

纵然是瞬间 提交于 2020-03-25 05:04:01
  在后台进行数据查询操作时,我们可能会使用GridView控件进行数据展示,有时需要将GridView控件中显示的数据导出到EXCEL文件中,通过调用GridView控件的RenderContol方法将数据导出到字符流中进行输出。   首先为GridView控件设置数据源,并进行绑定操作,然后在导出按钮添加如下点击事件代码。 protected void btnExport_Click(object sender, EventArgs e){ Response.Clear(); Response.AppendHeader("Content-Disposition", "attachment;filename=FileName.xls"); //设置输出流为简体中文 Response.Charset = "GB2312"; Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); //设置输出文件类型为excel文件。 Response.ContentType = "application/ms-excel"; StringWriter sw = new StringWriter(); HtmlTextWriter htw = new HtmlTextWriter(sw); GridView1

转发和重定向区别

我与影子孤独终老i 提交于 2020-03-25 03:57:51
在进行web开发时,跳转是最常见的,今天在这里来学习下2种跳转: 第一种是request.getRequestDispatcher().forward(request,response): 1、属于转发,也是服务器跳转,相当于方法调用,在执行当前文件的过程中转向执行目标文件,两个文件(当前文件和目标文件)属于同一次请求,前后页共用一个request,可以通过此来传递一些数据或者session信息,request.setAttribute()和request.getAttribute()。 2、在前后两次执行后,地址栏不变,仍是当前文件的地址。 3、不能转向到本web应用之外的页面和网站,所以转向的速度要快。 4、URL中所包含的“/”表示应用程序(项目)的路径。 第二种是response.sendRedirect(): 1、属于重定向,也是客户端跳转,相当于客户端向服务端发送请求之后,服务器返回一个响应,客户端接收到响应之后又向服务端发送一次请求,一共是2次请求,前后页不共用一个request,不能读取转向前通过request.setAttribute()设置的属性值。 2、在前后两次执行后,地址栏发生改变,是目标文件的地址。 3、可以转向到本web应用之外的页面和网站,所以转向的速度相对要慢。 4、URL种所包含的"/"表示根目录的路径。 特殊的应用:对数据进行修改、删除

微型 Python Web 框架: Bottle

冷暖自知 提交于 2020-03-24 23:49:16
微型 Python Web 框架: Bottle 在 19/09/11 07:04 PM 由 COSTONY 发表 Bottle 是一个非常小巧但高效的微型 Python Web 框架,它被设计为仅仅只有一个文件的Python模块,并且除Python标准库外,它不依赖于任何第三方模块。 路由(Routing):将请求映射到函数,可以创建十分优雅的 URL 模板(Templates):Pythonic 并且快速的 Python 内置模板引擎,同时还支持 mako, jinja2, cheetah 等第三方模板引擎 工具集(Utilites):快速的读取 form 数据,上传文件,访问 cookies,headers 或者其它 HTTP 相关的 metadata 服务器(Server):内置HTTP开发服务器,并且支持 paste, fapws3, bjoern, Google App Engine, Cherrypy 或者其它任何 WSGI HTTP 服务器 安装 Bottle 正如上面所说的, Bottle 被设计为仅仅只有一个文件,我们甚至可以不安装它,直接将 bottle.py 文件下载并复制到我们的应用中就可以使用了,这是一个好办法,但是如果还是想将其安装,那么我们可以像安装其它的 Python 模块一样: sudo easy_install -U bottle