Python 爬虫简单介绍
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 爬虫简单介绍相关的知识,希望对你有一定的参考价值。
Python上手很容易,免费开源,跨平台不受限制,面向对象,框架和库很丰富。
Python :Monty Python‘s Flying Circus (Python的名字来源,和蟒蛇其实无关)。
通过homebrew和pyenv可以维护多个Python版本。
相关知识
HTML
HTTP = HyperText Transfer Protocol
URI = Uniform Resource Identifier 强调资源
URL = Uniform Resource Locator 强调资源的位置
可以说url是一种具体的uri,uri是一个抽象的概念,即url标志一个uri,并指明了位置。
所谓web api,就是通过Http请求实现。
Head:向服务器索要与get请求相一致的相应,响应不会被返回。
GET:向特定资源发出请求。
PUT:向指定资源位置上传最新内容。
POST:向指定资源提交数据进行处理请求。
DELETE:删除指定URI所标识的资源。
PATCH:修改某一资源。
基本上使用就是GET和POST。爬虫就是发送HTTP请求,进行处理。
HTTP常见状态码:
200/OK:请求成功
201/Created:请求被实现,新资源根据请求被建立。
202/Accepted:服务器已接受,但尚未处理。
400/Bad Request:请求无法被服务器理解。
401/Unauthorized:请求需要验证。用户密码错误这种。
403/Forbidden:服务器已理解,拒绝执行。
404/Not Found:找不到
HTML/XML/JSON
HTML,标记语言,不是编程语言。XML和HTML格式差不多的
<标签 属性 = "属性的值"> </标签>
DOM文档模型(BeautifulSoup处理很方便)
CSS .(点)是类的引用,多个标签可以使用同一个class,一个标签上也可以用多个class。
#是对应唯一的ID,强调个性化。
JSON,比xml简化,小,快,容易解析。
数据库:MySQl,SQLite,MongoDB,Redis,等等。
爬虫的简单介绍
工作流程:
将种子url放入队列,从队列中获取url,抓取内容,解析内容,将需进一步抓取的url放入工作队列,存储解析后的内容。
抓取策略:深度优先,广度优先,PageRank。
去重:Hash表,bloom过滤器。
Robots规范,网站通过Robots协议告诉搜索引擎哪些页面可以爬取,哪些不可以爬取。网站和爬虫的沟通方式,用来指导搜索引擎更好的爬取网站内容。
requests包要比urllib2要好用。
一个简单的例子:
# -*- coding: UTF-8 -*- import sys reload(sys) sys.setdefaultencoding(‘utf-8‘) import requests import threading def display_info(code): url = ‘http://hq.sinajs.cn/list=‘ + code response = requests.get(url).text # js_info = response.read() print response def single_thread(codes): for code in codes: code = code.strip() display_info(code) def multi_thread(tasks): threads = [threading.Thread(target=single_thread, args=(codes,)) for codes in tasks] for t in threads: t.start() for t in threads: t.join() if __name__ == ‘__main__‘: codes = [‘sh600001‘, ‘sh600002‘, ‘sh600003‘, ‘sh600004‘, ‘sh600005‘] thread_len = int(len(codes) / 4) # 每个线程要处理几个股票 t1 = codes[0:thread_len] t2 = codes[thread_len:thread_len * 2] t3 = codes[thread_len * 2:thread_len * 3] t4 = codes[thread_len * 3:] multi_thread([t1, t2, t3, t4])
以上是关于Python 爬虫简单介绍的主要内容,如果未能解决你的问题,请参考以下文章