[python爬虫]requests库 2

解码请求内容 我们以Github的网址再来举例子,我们可以读取服务器下传给我们的内容: >>> import requests >>> r = requests.get(’https://api.github.com/events’) >>> r.text u'[{“repository”:{“open_issues”:0,”url”:”https://github.com/… 我们的函数一般会自动解码从服务器上下载的内容, 通过调用r.encoding参数也可以自行更改解码格式: >>> r.encoding ‘utf-8’ >>> r.encoding = ‘ISO-8859-1′ 当然,我们也可以通过二进制来解码内容: >>> from PIL import Image >>> from io import BytesIO >>> i = Image.open(BytesIO(r.content)) 通过json解码也同样可行: >>> import requests >>> r = requests.get(’https://api.github.com/events’) >>> r.json() [{u’repository’: {u’open_issues’: 0, u’url’: ‘https://github.com/… 这里要注意,我们成功获得json文件并不代表我解码成功,因为一些网站返回给你的可能就是错误的信息 自定义http头字段(headers) : 我们可以将头字段的一些参数放到一个字典当中,那样再通过get调用就十分便利,那么我们为什么要自定义头字段呢?因为一些网站有反爬虫机制,会禁止默认的用户代理访问,这一点我们可以在网站中的robots.txt文件中看到: […]

[Daily Leetcode]500. Keyboard Row

Question: Given a List of words, return the words that can be typed using letters of alphabet on only one row’s of American keyboard like the image below. Example 1: Input: [“Hello”, “Alaska”, “Dad”, “Peace”] Output: [“Alaska”, “Dad”] Note: You may use one character in the keyboard more than once. You may assume the input […]

[python爬虫]requests库 1

requests库在爬取数据的过程中久负盛名,很多网站上评论说比urllib, urllib2不知道高到哪个地方去了,那么这篇文章呢,主要是想要总结一下requests库的基本用法,当然,如果有可能的话,我在来进行一下实践操作~ 首先当然需要在命令行中安装requests库: pip install requests 发送我的第一个请求: import requests r = requests.get(’https://api.github.com/events’) 通过这么简简单单的几步操作,我们就轻而易举的将这个网站所有的内容存放到r这个变量当中了,有没有很简单,当然我们可以通过以下几个实例来看看如何通过request进行post,put,delete,head,options等等诸如此类的操作,说到这儿,我认为有必要为大家介绍一下什这些操作到底是什么: 这些功能统称为HTTP的请求方法 GET: GET请求会显示请求指定的资源。一般来说GET方法应该只用于数据的读取,而不应当用于会产生副作用的非幂等的操作中。GET会方法请求指定的页面信息,并返回响应主体,GET被认为是不安全的方法,因为GET方法会被网络蜘蛛(就是我们)等任意的访问。 HEAD: HEAD方法与GET方法一样,都是向服务器发出指定资源的请求。但是,服务器在响应HEAD请求时不会回传资源的内容部分,即:响应主体。这样,我们可以不传输全部内容的情况下,就可以获取服务器的响应头信息。HEAD方法常被用于客户端查看服务器的性能。 POST: POST请求会 向指定资源提交数据,请求服务器进行处理,如:表单数据提交、文件上传等,请求数据会被包含在请求体中。POST方法是非幂等的方法,因为这个请求可能会创建新的资源或/和修改现有资源。 PUT: PUT请求会身向指定资源位置上传其最新内容,PUT方法是幂等的方法。通过该方法客户端可以将指定资源的最新数据传送给服务器取代指定的资源的内容。 >>> r = requests.post(‘http://httpbin.org/post’, data = {‘key’:’value’}) >>> r = requests.put(‘http://httpbin.org/put’, data = {‘key’:’value’}) >>> r = requests.delete(‘http://httpbin.org/delete’) >>> r = requests.head(‘http://httpbin.org/get’) >>> r = requests.options(‘http://httpbin.org/get’) 这里也许就有人会问; 后面的data的内容到底是什么呀,其实这就是我们要post或者put上去的内容啊,就相当于传输文件一样,这甚至有可能是我们要传输的文件路径,在使用amazon watson一些服务,比如图片识别等方法,你要写一个python的程序需要用到这个服务,那么这就是再好不过的方法了,你只需把他给你的网址拷贝下来,按照他的格式通过这些请求来进行编程,不过这些都是后话了。 向URL传输参数: 我们向url传输参数(比如用户名,密码)有一个很直观的方式,那就是在网址的‘?’后面加入你要传输的参数,比如  httpbin.org/get?key=val […]

[Scrapy]简介

感慨于我们当前的国内Scrapy相关的中文教程系列很少,当然也有很多很厉害的前辈,例如静觅的博客对Scrapy有很是深入的研究,但是有一点太抽象了一些,不太详细,我这回主要是以 Scrapy 官方的操作指南为蓝本,进行总结和概括,和各位有心的读者一起探讨一下如何用Scrapy进行网站上的数据挖掘,从零开始,希望各位能够喜欢! 什么是Scrapy? 首先,Scrapy是一种应用框架,这个框架可以用来爬取指定网站上的数据,这些数据可以用来进行数据挖掘这之类的高级的东东 程序举例: 接下来我们通过爬取一个名人名言网站的数据进行举例分析http://quotes.toscrape.com import scrapy class QuotesSpider(scrapy.Spider):     name = "quotes"     start_urls = [         ‘http://quotes.toscrape.com/tag/humor/’,     ]     def parse(self, response):         for quote in response.css(’div.quote’):             yield {           […]