一.app爬取 前面都是介绍爬取Web网页的内容,随着移动互联网的发展,越来越多的企业并没有提供Web页面端的服务,而是直接开发了App,更多信息都是通过App展示的 App爬取相比Web端更加容易 反爬虫能力没有那么强,而且数据大多数是以JSON形式传递的 解析更加简单 在Web端 我们可以通过浏览器开发者工具 监听到各个网络请求和响应过程 在App端 查看内容就需要抓包软件例如 WireShark Fiddler Charles mitmproxy AnyProxy等 它们原理基本相同 可以…
听到“爬虫”,是不是第一时间想到Python/php ? 多少想玩爬虫的Java学习者就因为语言不通而止步.Java是真的不能做爬虫吗? 当然不是. 只不过python的3行代码能解决的问题,而Java要30行. 这里推荐大家一个大牛做的java爬虫框架 [WebMagic] 文档简单易懂!java爬虫开发的福利啊! 一起来动手做一个小应用吧! 爬虫小应用–知乎用户信息 爬虫思想有3步 1. 抽取目标链接 2. 抽取需要的信息 3. 处理数据 一. 抽取目标链接 (确定入口地址,这里的入口是ht…
一:爬取思路 首先我们应该找到一个账号,这个账号被关注的人和关注的人都相对比较多的,就是下图中金字塔顶端的人,然后通过爬取这个账号的信息后,再爬取他关注的人和被关注的人的账号信息,然后爬取被关注人的账号信息和被关注信息的关注列表,爬取这些用户的信息,通过这种递归的方式从而爬取整个知乎的所有的账户信息.整个过程通过下面两个图表示: 二:爬虫过程分析 这里我们找的账号地址是:https://www.zhihu.com/people/excited-vczh/answers 下图是大V的主要信息: 然…
转载自:http://blog.csdn.net/eastmount/article/details/51231852 一. 文章介绍 源码下载地址:http://download.csdn.net/detail/eastmount/9501273前一篇文章"[python爬虫] Selenium爬取新浪微博内容及用户信息"简单讲述了如何爬取新浪微博手机端用户信息和微博信息.用户信息:包括用户ID.用户名.微博数.粉丝数.关注数等.微博信息:包括转发或原创.点赞数.转发数.评论数.发布…
思路:通过获取知乎某个大V的关注列表和被关注列表,查看该大V和其关注用户和被关注用户的详细信息,然后通过层层递归调用,实现获取关注用户和被关注用户的关注列表和被关注列表,最终实现获取大量用户信息. 一.新建一个scrapy项目 scrapy startproject zhihuuser 移动到新建目录下: cd zhihuuser 新建spider项目: scrapy genspider zhihu zhihu.com 二.这里以爬取知乎大V轮子哥的用户信息来实现爬取知乎大量用户信息. a) 定…
自从这两天开始学爬虫,就一直想做个爬虫爬知乎.于是就开始动手了. 知乎用户动态采取的是动态加载的方式,也就是先加载一部分的动态,要一直滑道底才会加载另一部分的动态.要爬取全部的动态,就得先获取全部的url. 我先找到了第一条url: https://www.zhihu.com/api/v4/members/***************************/activities?limit=7&session_id=************************&after_id=*…
今天用scrapy框架爬取一下所有知乎用户的信息.道理很简单,找一个知乎大V(就是粉丝和关注量都很多的那种),找到他的粉丝和他关注的人的信息,然后分别再找这些人的粉丝和关注的人的信息,层层递进,这样下来,只要有关注的人或者有粉丝的账号,几乎都能被爬下来.话不多说,进入正题. 1.首先按照上篇博客的介绍,先建立项目,然后建一个spider文件,scrapy  genspider  zhihu  www.zhihu.com. 进入settings.py,修改内容 ROBOTSTXT_OBEY = F…
思路 选定起始人 选一个关注数或者粉丝数多的大V作为爬虫起始点 获取粉丝和关注列表 通过知乎接口获得该大V的粉丝列表和关注列表 获取列表用户信息 获取列表每个用户的详细信息 获取每个用户的粉丝和关注 进一步对列表中的每个用户 获取他们的粉丝和关注列表实现递归爬取 起始点 https://www.zhihu.com/people/excited-vczh/answers 抓取信息 个人信息 关注列表 ajax请求 代码实现 ./items.py文件 # -*- coding: utf-8 -*-…
一.使用selenium 模拟浏览器操作爬取淘宝商品信息 之前我们已经成功尝试分析Ajax来抓取相关数据,但是并不是所有页面都可以通过分析Ajax来完成抓取.比如,淘宝,它的整个页面数据确实也是通过Ajax获取的,但是这些Ajax接口参数比较复杂,可能会包含加密密钥等,所以如果想自己构造Ajax参数,还是比较困难的.对于这种页面,最方便快捷的抓取方法就是通过Selenium 目标:利用Selenium抓取淘宝商品并用pyquery解析得到商品的图片.名称.价格.购买人数.店铺名称和店铺所在地信息…
利用requests库和正则表达式 抓取猫眼电影TOP100 (requests比urllib使用更方便,由于没有学习HTML系统解析库 选用re) 1.目标 抓取电影名称 时间 评分 图片等 url http://maoyan.com/board/4 结果以文件形式保存 2.分析 offset 代表偏移量 如果为n 电影序号为n+1~n+10 每页显示10个 获取100 分开请求10次 offset 分别为0 10 20...90 利用正则提取相关信息 3.抓取页面 import reques…
关系型数据库存储 关系型数据库是基于关系模型的数据库,而关系模型是通过二维表保存的,所以它的存储方式就是行列组成的表.每一列是一个字段,每一行是一条记录.表可以看作某个实体的集合,而实体之间存在联系,就需要表与表之间的关联关系来体现.例如 主键和外键的关联关系,多个表组成一个数据库,也就是关系型数据库. 关系型数据库有很多种.如SQLite.MySQL.Oracle.SQL Server.DB2等. 1.MySQL的存储 在python2中,连接MySQL的库大多是使用MySQLdb,但是此库的…
前文介绍了python的scrapy爬虫框架和登录知乎的方法. 这里介绍如何爬取知乎的问题信息,并保存到mysql数据库中. 首先,看一下我要爬取哪些内容: 如下图所示,我要爬取一个问题的6个信息: 问题的id(question_id) 标题(title) 问题描述(intro) 回答个数(answer_num) 关注人数(attention_uv) 浏览次数(read_pv)  爬取结果我保存到mysql数据库中,表名为:zhihu_question 如下图中,红框里的就是上图是有人为我的穿…
本次爬取自如网房源信息所用到的知识点: 1. requests get请求 2. lxml解析html 3. Xpath 4. MongoDB存储 正文 1.分析目标站点 1. url: http://hz.ziroom.com/z/nl/z3.html?p=2 的p参数控制分页 2. get请求 2.获取单页源码 # -*- coding: utf-8 -*- import requests import time from requests.exceptions import Request…
一.动态渲染页面爬取 上节课我们了解了Ajax分析和抓取方式,这其实也是JavaScript动态渲染页面的一种情形,通过直接分析Ajax,借助requests和urllib实现数据爬取 但是javaScript动态渲染布置Ajax一种 例如中国青年网(http://news.youth.cn/gn/)分页部分由js生成,并非原始HTML代码,这其中并不包含ajax请求 比如ECharts官方示例(http://echarts.baidu.com/demo.html#bar-negative)图形…
一.Ajax数据爬取 1. 简介:Ajax 全称Asynchronous JavaScript and XML 异步的Javascript和XML. 它不是一门编程语言,而是利用JavaScript在保证页面不被刷新,页面链接不改变的情况下与服务器交换数据,获得数据后,再利用JavaScript改变页面. 示例:新浪微博 热门 2. 基本原理 2.1 发送请求 JavaScript可以实现页面交互功能 Ajax也不例外 它是由JavaScript实现的,实际上执行了如下代码 var xmlhtt…
一.urllib库 urllib是python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在python3中的为urllib.request和urllib.parse,在python2中是urllib和urllib2. 二.由易到难的爬虫程序: 1.爬取百度首页所有数据值 #!/usr/bin/env python # -*- coding:utf-8 -*- #导包 import urllib.request import urllib.parse…
二.pyspider框架的使用 简介 pyspider是由国人binux 编写的强大的网络爬虫系统 github地址 : https://github.com/binux/pyspider 官方文档 http://docs.pyspider.org/ pyspider 带有强大的WebUI 脚本编辑器 任务监控器 项目管理器 以及结果处理器 支持多种数据库后端 多种消息队列 JavaScript渲染页面的爬取 使用起来非常方便 1.基本功能 提供可视化编写和调试爬虫爬虫项目管理能力支持多种后端数…
一.代理池的维护 上面我们利用代理可以解决目标网站封IP的问题 在网上有大量公开的免费代理 或者我们也可以购买付费的代理IP但是无论是免费的还是付费的,都不能保证都是可用的 因为可能此IP被其他人使用来爬取同样的目标站点而被封禁或者代理服务器突然故障或者网络繁忙 一旦选用了一个不可用的代理,这势必会影响爬虫的工作效率 1.准备工作 需要安装Redis数据库并启动服务 另外还需要安装aiohttp.requests.redis-py.pyquery.flask库 redis数据库安装 下载地址 h…
cookie是一种本地存储机制,cookie是存储在本地的 session其实就是将用户信息用户名.密码等)加密成一串字符串,返回给浏览器,以后浏览器每次请求都带着这个sessionId 状态码一般是服务器自己定义,也可以框架定义,也可以自己定义 F12 NetWork 下可以看到每个请求的状态码 301永久性重定向,比如更换了 域名,但又希望原域名可以请求的到 302临时性重定向,比如未登录状态下点击个人中心,会重定向到登陆页面 404一般是url非法,当然这种情况也可以返回200的空页面,但…
本次实战项目适合,有一定Python语法知识的小白学员.本人也是根据一些网上的资料,自己摸索编写的内容.有不明白的童鞋,欢迎提问. 目的:爬取百度小说吧中的原创小说<猎奇师>部分小说内容 链接:http://tieba.baidu.com/p/4792877734 首先,自己定义一个类,方便使用.其实类就像一个"水果篮",这个"水果篮"里有很多的"水果",也就是我们类里面定义的变量啊,函数啊等等,各种各样的.每一种"水果&q…
一.scrapy框架的使用 前面我们讲了pyspider 它可以快速的完成爬虫的编写 不过pyspider也有一些缺点 例如可配置化不高 异常处理能力有限对于一些反爬虫程度非常强的网站 爬取显得力不从心 1. scrapy框架介绍 scrapy是一个基于Twisted 的异步处理框架 是纯python实现的爬虫框架 架构清晰 模块之间耦合度低 可拓展性极强可以灵活完成各种需求 只需要定制开发几个模块 就可以轻松实现一个爬虫 1.1 架构介绍 可以分为如下几个部分 Engine 引擎 处理整个系统…
3.CSV文件存储 CSV 全称 Comma-Separated Values 中文叫做逗号分隔值或者字符分隔值,文件以纯文本形式存储表格数据.文件是一个字符序列 可以由任意数目的记录组成相当于一个结构化表的纯文本形式,它比Excel更加简洁,XLS文本是电子表格,包含文本,数值,公式和格式等内容,CSV都没有 就是特定的字符分隔纯文本,结构简单清晰. 3.1 写入 示例: import csv with open('data.csv','w') as csvfile: writer = csv…
1 . 什么是 AJAX ? AJAX = 异步 JavaScript 和 XML. AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新. 传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面. 几个常见的用到ajax的场景. 比如你在逛知乎,你没有刷新过网页,但是你却能看到你关注的用户或者话题有了新动态的消息提示. 还比如,我们在看视频时,可以看到下面…
一.分布式爬虫 前面我们了解Scrapy爬虫框架的基本用法 这些框架都是在同一台主机运行的 爬取效率有限 如果多台主机协同爬取 爬取效率必然成倍增长这就是分布式爬虫的优势 1. 分布式爬虫基本原理 1.1 分布式爬虫架构 Scrapy 单机爬虫中有一个本地爬取队列Queue 这个队列是利用 deque 模块实现的 如果新的 Request 生成就会放在队列里面 随后 Request被Scheduler调度 之后 Request 交给 Downloader 执行爬取 简单的调度架构如图 单主机爬虫…
一.验证码识别 1.图形验证码的识别 识别图形验证码需要 tesserocr 库 OCR技术识别(光学字符识别,是指通过扫描字符,然后通过其形状将其翻译成电子文本的过程.)例如 中国知网注册页面 http://my.cnki.net/elibregister/commonRegister.aspxtesserocr是Python的一个OCR识别库,但其实是对tesseract做的一层Python API封装,所以它的核心是tesseract所以在安装tesserocr之前要先安装tesserac…
安装python后 自带urllib库 模块篇 分为几个模块如下: 1. urllib.request 请求模块 2. urllib.parse 分析模块 3. urllib.error 异常处理模块 4. urllib.robotparser robots文本协议识别 用的比较少 方法篇 分为以下几种方法: urlopen() 示例: import urllib.request response = urllib.request.urlopen("https://www.python.org&…
刚开始学习python爬虫,写了一个简单python程序爬取糗事百科. 具体步骤是这样的:首先查看糗事百科的url:http://www.qiushibaike.com/8hr/page/2/?s=4959489,可以发现page后的数据代表第几页. 然后装配request,注意要设置user_agent user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' headers = {'User-Agent': user_agen…
根据现有的知识,写了一个下载妹子图(meizitu.com)Scrapy脚本,把全站两万多张照片下载到了本地. 网站的分析 网页的网址分析 打开网站,发现网页的网址都是以 http://www.meizitu.com/a/+某个数+.html组成,例如:http://www.meizitu.com/a/5585.html于是,我就想着在 start_urls 中就按照这三部分来组合. name = 'meizi'    allowed_domains = ['www.meizitu.com']…
源代码:https://github.com/nnngu/LagouSpider 效果预览 思路 1.首先我们打开拉勾网,并搜索"java",显示出来的职位信息就是我们的目标. 2.接下来我们需要确定,怎样将信息提取出来. 查看网页源代码,这时候发现,网页源代码里面找不到职位相关信息,这证明拉勾网关于职位的信息是异步加载的,这也是一种很常用的技术. 异步加载的信息,我们需要借助 chrome 浏览器的开发者工具进行分析,打开开发者工具的方法如下: 点击Nerwork进入网络分析界面,这…