随笔分类 - python
摘要:插入排序; 假设数组长度为n,先从第二个元素开始,与前一个元素比较,之后将较小的元素 放在前面,现在前两个元素是有顺序的,这时取第三个元素,与前一个元素(也就是第二个)比较,较小的放在前面 因为前面两个元素顺序已经排好,再将这个新进入到前面的较小元素与前面排好顺序的元素依次比较,直到找到合适位置插入
阅读全文
摘要:模拟登陆大体思路见此博文,本篇文章只是将登陆在scrapy中实现而已 之前介绍过通过requests的session 会话模拟登陆;必须是session,涉及到验证码和xsrf的写入cookie验证的问题;在scrapy中不需担心此问题,因为Request会保证这是一个会话,并且自动传递cookie
阅读全文
摘要:#-*-coding:utf-8 -*-__author__ = "ruoniao"__date__ = "2017/5/31 20:59" 之前我们通过爬取伯乐在线的文章,伯乐在线对爬取没有什么限制,这次爬取知乎,就有了爬取限制,首先就是登录限制;为破解限制,首先就是模拟登录 模拟登陆首先要明白的
阅读全文
摘要:ItemLoader的简单使用:目的是解决在爬虫文件中代码结构杂乱,无序,可读性差的缺点 经过之前的基础,我们可以爬取一些不用登录,没有Ajax的,等等其他的简单的爬虫回顾我们的代码,是不是有点冗长,将所需字段通过xpath或者css解析出来,再自定义语句(还不是函数中)进行清洗;然后再装入Item
阅读全文
摘要:异步导出数据到Mysql中 上次说过从Item中同步写入数据库,因为网络的下载速度和数据库的I/O速度是不一样的所以有可能会发生下载快,但是写入数据库速度慢,造成线程的堵塞;关于堵塞和非堵塞,同步和异步的关系,因为没接触过,所以也不是很好的理解,这里查看了些资料,已做记录 链接1:https://w
阅读全文
摘要:之前介绍过将数据写入mysql数据库中,但是对于那些没有数据库的,可以通过写入json文件中或者是写入到csv或者xls;这里只介绍写入json文件中,也为再练习一下自定义的pipeline 思路: 1,写入数据库中,从数据库中可以以各种形式导出 2,自定义pipeline,注册在setting中
阅读全文
摘要:前面讲解到将Item中的所有字段都已经填写完成,那么接下来就是将他们存储到mysql数据库中,那就用到了pipeline项目管道了; 对项目管道的理解:做一个比喻,爬取好比是开采石油,Item装的都是原油,需要通过一系列的管道和工艺进行提炼,而这些原油都是通过pipeline进行加工的,才能真正的到
阅读全文
摘要:前面讲到将每篇文章的URL写入Item,但是每个url的长度是不同的,可以在Item中设置一个字段怎样使得每个URL的长度相同,这就需要对每个URL进行md5运算,使得长度统一,再加入到设定的Item字段中 从项目的根目录下新建一个文件夹,把所有能用到的自定义方法写入,,命名为util并从util下
阅读全文
摘要:前边讲到简单的图片下载,但是怎样将图片的本地路径和存储在Item中的数据对应起来,所以本篇博文讲解到如何将 本地的下载后的图片路径写入到Item中 思路:自定义pipline,多加个管道,该管道继承下载图片的类,并重写与Item 交互的方法,从众提取到本地路径,并返回这个Item交给下一个pipli
阅读全文
摘要:scrapy 提供了自动下载图片到本地的功能,通过项目管道设置 一: 在setting 文件中ITEM_PIPELINE添加: 'scrapy.pipelines.images.ImagesPipeline':1 1为处理顺序,顺序越小,越先处理; 二: 继续在setting中添加图片URL地址获取
阅读全文
摘要:需求: 一个文件夹中有个文件,要求对特定的文件加入可执行权限 某文件系统目录下有一系列文件: quicksort graph.py heap.java install.sh stack.cpp .....编写程序对所有的.sh文件和.py文件加上用户可执行权限 解决方法: 使用字符串的str.sta
阅读全文
摘要:上次我们介绍了scrapy的安装和加入debug的main文件,这次重要介绍创建的爬虫的基本爬取有用信息 通过命令(这篇博文)创建了jobbole这个爬虫,并且生成了jobbole.py这个文件,又写了xpath和css的基本用法的博文 首先分析网页的结构和抓取流程: 1,下载start_urls,
阅读全文
摘要:基本语法: * 选择所有节点#container 选择id为container的节点.container 选择所有class包含container的节点li a 选取所有li 下所有a节点ul + p 选取ul后面的第一个p元素div#container > ul 选取id为container的di
阅读全文
摘要:#-*-coding:utf-8-*-''' 字符串的切割 当需要的分隔符是一个是: s.split("分隔符") 当分隔符是多个时: s = "abcd,1313|;gg2*hhh" 方法一: 将多个分隔符每个每个的拆开分隔 方法二: 通过re模块的split()方法'''#方法一 #方法二:
阅读全文
摘要:好比Django的Debuge 与前端进行交互时的方便,但是Scrapy 不自带,所以我们写一个main文件来debuge 作用:通过cmd 命令启动爬虫
阅读全文
摘要:xpath简介 1,使用路径表达式在xml和html中解析 2,包含标准函数路(所有库支持的xpath语法一致) 3,W3C标准 节点: 基本语法: 举例元素标签为artical标签 一: artical 选取所有artical元素的子节点 /artical 选取根元素artical artical
阅读全文
摘要:Scrapy安装: 1,首先进入虚拟环境 2,使用国内豆瓣源进行安装,快! 3,特殊情况出错:缺少c++,解决办法:自己安装了个vs2015 基本命令: 创建工程: 在这里只能通过命令行:pycharm 没有加载scrapy,与Django 不一样 命令: #注意:cd 到所需创建工程的目录下 sc
阅读全文
摘要:首先了解一下历史,但是本篇文章冗杂,如老太太裹脚布 又臭又长 编码历史: 1. 计算机只能处理数字,文本文件只有转换为数字 才能处理。8bit==1字节 所以一个字节能表示的最大的数就是255 2. 美国人发明计算机。用英语,所有一个字节就表示了所有字符 就是ASCII(一个字节) 编码就是美国人的
阅读全文
摘要:技术选型: Scrapy vs requsts+beautifulsoup 1,reqests,beautifulsoup都是库,Scrapy是框架 2,Scrapy中可以加入requests beautifulsoup 3,Scrapy基于twisted,异步IO框架,性能最大的优势 4,Scra
阅读全文
摘要:对可迭代迭代进行连接,返回一个可迭代对象 两种方式: 并行连接 zip() 串行连接 itertools.chain 运行截图:
阅读全文

浙公网安备 33010602011771号