在之前的文章中我们介绍了一下 requests 模块,今天我们再来看一下 Python 爬虫中的正则表达的使用和 re 模块. 实际上爬虫一共就四个主要步骤: 明确目标 (要知道你准备在哪个范围或者网站去搜索) 爬 (将所有的网站的内容全部爬下来) 取 (去掉对我们没用处的数据) 处理数据(按照我们想要的方式存储和使用) 我们在之前写的爬虫程序中,都只是获取到了页面的全部内容,也就是只进行到了第2步,但是大部分的东西是我们不关心的,因此我们需要将之按我们的需要过滤和匹配出来.这时候我们就需要用到…
上一篇文章我们对爬虫有了一个初步认识,本篇文章我们开始学习 Python 爬虫实例. 在 Python 中有很多库可以用来抓取网页,其中内置了 urllib 模块,该模块就能实现我们基本的网页爬取. 在 Python2.x 和 Python3.x 中 urllib 模块是不一样的,但是用法上差不多,我们先用 Python2.x 中的 urllib 来实现一个 demo. 在 Python2.x 中内置了 urllib 模块,但是 Python 创始人 Guido van Rossum 觉得其太臃…
在之前的文章中我们介绍了一下 opener 应用中的 ProxyHandler 处理器(代理设置),本篇文章我们再来看一下 opener 中的 Cookie 的使用. Cookie 是指某些网站服务器为了辨别用户身份和进行Session跟踪,而储存在用户浏览器上的文本文件,Cookie可以保持登录信息到用户下次与服务器的会话. HTTP是无状态的面向连接的协议, 为了保持连接状态, 引入了Cookie机制 Cookie是http消息头中的一种属性,包括: Cookie名字(Name) Cooki…
之前的文章我们介绍了一下 Python 中的正则表达式和与爬虫正则相关的 re 模块,本章我们就利用正则表达式和 re 模块来做一个案例,爬取<糗事百科>的糗事并存储到本地. 我们要爬取的网站链接是 https://www.qiushibaike.com/text/page/1/ . 我们要爬取的是里面的糗事,在之前的文章中我们已经可以爬取整个 url 链接里的 html 内容,那么我们就可以根据爬取到的 html 代码,再通过 re 模块匹配我们想要的内容即可. 我们通过调用开发者工具检查…
之前的文章我们介绍了 re 模块和 lxml 模块来做爬虫,本章我们再来看一个 bs4 模块来做爬虫. 和 lxml 一样,Beautiful Soup 也是一个HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML 数据. lxml 只会局部遍历,而Beautiful Soup 是基于HTML DOM的,会载入整个文档,解析整个DOM树,因此时间和内存开销都会大很多,所以性能要低于lxml. BeautifulSoup 用来解析 HTML 比较简单,API非常人性化,支持CS…
之前的文章我们介绍了一下 Python 的 json 模块,本章我们就介绍一下之前根据 Xpath 模块做的爬取<糗事百科>的糗事进行丰富和完善. 在 Xpath 模块的爬取糗百的案例中我们只是爬取了其中的糗事,然后存储到本地,并没有作者姓名,头像等信息,所有我们通过之前介绍的 path 模块讲获取到的完整信息以 json 的形式存储到本地. 我们要爬取的网站链接是 https://www.qiushibaike.com/text/page/1/ . 我们通过 Xpath Helper 的谷歌…
之前的文章我们介绍了几种可以爬取网站信息的模块,并根据这些模块爬取了<糗事百科>的糗百内容,本章我们来看一下用于专门爬取网站信息的框架 Scrapy. Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛.Scrapy 使用了 Twisted['twɪstɪd](其主要对手是Tornado)异步网络框架来处理网络通讯,可以加快我们的下载速度,不用自己去实现异步框架,并且包含了各种中间件接口,可以灵活的完成各种需求. Scrapy架构图 Scrap…
在之前的文章中我们介绍了 scrapy 框架并给予 scrapy 框架写了一个爬虫来爬取<糗事百科>的糗事,本章我们继续说一下 scrapy 框架并对之前的糗百爬虫做一下优化和丰富. 在上一篇文章中,我们在项目中创建了一个 qiushiSpider.py 的文件,代码如下: import scrapy from ..items import QiushiItem class QiushiSpider(scrapy.Spider): # 爬虫名 name = "qiubai"…
在之前的文章中我们带入了 opener 方法,接下来我们看一下 opener 应用中的 ProxyHandler 处理器(代理设置). 使用代理IP,这是爬虫/反爬虫的第二大招,通常也是最好用的. 很多网站会检测某一段时间某个IP的访问次数(通过流量统计,系统日志等),如果访问次数多的不像正常人,它会禁止这个IP的访问. 所以我们可以设置一些代理服务器,每隔一段时间换一个代理,就算IP被禁止,依然可以换个IP继续爬取. urllib.request 中通过ProxyHandler来设置使用代理服…
在之前的文章中我们一直用到的库是 urllib.request,该库已经包含了平常我们使用的大多数功能,但是它的 API 使用起来让人感觉不太好,而 Requests 自称 “HTTP for Humans”,说明使用更简洁方便. Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用:) Requests 继承了urllib2的所有特性.Requests支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际化…
之前的文章我们介绍了一下 Xpath 模块,接下来我们就利用 Xpath 模块爬取<糗事百科>的糗事. 之前我们已经利用 re 模块爬取过一次糗百,我们只需要在其基础上做一些修改就可以了,为了保证项目的完整性,我们重新再来一遍. 我们要爬取的网站链接是 https://www.qiushibaike.com/text/page/1/ . 我们通过 Xpath Helper 的谷歌插件经过分析获取到我们想要的内容为: //div[@class="content"]/span[…
之前的文章我们介绍了一下 BeautifulSoup4 模块,接下来我们就利用 BeautifulSoup4 模块爬取<糗事百科>的糗事. 之前我们已经分别利用 re 模块和 Xpath 模块爬取过糗百,我们只需要在其基础上做一些修改就可以了,为了保证项目的完整性,我们重新再来一遍. 我们要爬取的网站链接是 https://www.qiushibaike.com/text/page/1/ . 我们通过浏览器开发者工具的控制台发现我们想要的数据在  <div class="con…
之前的文章我们已经可以根据 re 模块,Xpath 模块和 BeautifulSoup4 模块来爬取网站上我们想要的数据并且存储在本地,但是我们并没有对存储数据的格式有要求,本章我们就来看数据的存储格式 JSON 及 Python 中的 json 模块. JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写.同时也方便了机器进行解析和生成.适用于进行数据交互的场景,比如网站前台与后台之间的数据交互. JSON和XML的比较…
在之前的文章我们通过 scrapy 框架 及 scrapy.Spider 类做了一个<糗事百科>的糗百爬虫,本章我们再来看一下相较于 scrapy.Spider 类更为强大的 CrawlSpider 类. CrawlSpider 是Spider的派生类,Spider 类的设计原则是只爬取start_url列表中的网页,而 CrawlSpider 类定义了一些规则 (rule) 来提供跟进link的方便的机制,从爬取的网页中获取link并继续爬取的工作更适合. 源码参考 class CrawlS…
之前的文章我们介绍了一下 Python 中正则表达式和 re 模块来做一个案例,爬取<糗事百科>的糗事并存储到本地.本章我们来看一下另一种爬取数据的方式 XPath. 我们在前面爬取<糗事百科>的时候处理 HTML 文档的时候发现会有些累人,还要对正则表达式非常熟悉爬起来才得心应手,那有没有更为方便的方法呢,答案当然是有的,我们可以先将 HTML文件 转换成 XML文档,然后用 XPath 查找 HTML 节点或元素. 什么是XML XML 指可扩展标记语言(EXtensible…
之前的文章我们做了一个简单的例子爬取了百度首页的 html,我们用到的是 urlopen 来打开请求,它是一个特殊的opener(也就是模块帮我们构建好的).但是基本的 urlopen() 方法不支持代理.cookie等其他的HTTP/HTTPS高级功能,所以我们需要用到 Python 的 opener 来自定义我们的请求内容. 具体步骤: 使用相关的 Handler处理器 来创建特定功能的处理器对象: 然后通过 build_opener()方法使用这些处理器对象,创建自定义opener对象:…
通用爬虫和聚焦爬虫 根据使用场景,网络爬虫可分为 通用爬虫 和 聚焦爬虫 两种. 通用爬虫 通用网络爬虫 是 捜索引擎抓取系统(Baidu.Google.Yahoo等)的重要组成部分.主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份. 通用搜索引擎(Search Engine)工作原理 通用网络爬虫 从互联网中搜集网页,采集信息,这些网页信息用于为搜索引擎建立索引从而提供支持,它决定着整个引擎系统的内容是否丰富,信息是否即时,因此其性能的优劣直接影响着搜索引擎的效果. 第一步:…
之前的文章我们做了一个简单的例子爬取了百度首页的 html,本篇文章我们再来看一下 Get 和 Post 请求. 在说 Get 和 Post 请求之前,我们先来看一下 url 的编码和解码,我们在浏览器的链接里如果输入有中文的话,如:https://www.baidu.com/s?wd=贴吧,那么浏览器会自动为我们编码成:https://www.baidu.com/s?wd=%E8%B4%B4%E5%90%A7,在 Python2.x 中我们需要使用 urllib 模块的 urlencode 方…
https://www.cnblogs.com/weijiutao/p/10735455.html…
一.Python 概述 1.计算机语言概述 (1).语言:交流的工具,沟通的媒介 (2).计算机语言:人跟计算机交流的工具 (3).Python是计算机语言的一种 2.Python编程语言 代码:人类的语言,同代码命令机器,跟机器交(2).python解释器:担任翻译工作(3)流程: 写代码 --> 执行:由翻译官(Python解释器)把命令(Code)翻译给机器,同时把机器结果翻译给我们 3.Python简史 (1).1989 (2).2008:Python 3.0 诞生 (3)2014:宣布…
1.什么是Urllib(官网地址:https://docs.python.org/3/library/urllib.html#module-urllib) Urllib是python内置的HTTP请求库 包括以下模块: urllib.request 请求模块 urllib.error 异常处理模块 urllib.parse url解析模块 urllib.robotparser robots.txt解析模块 2.urllib.request (1)urllib.request.urlopen(ur…
官网地址:https://lxml.de/xpathxslt.html 导入: from lxml import etree lxml.tree 支持 ElementTree 和 Element 上的 find,findall,findtext方法的简单路径语法,作为特定的 lxml 扩展,这些类提供了 xpath()方法,该方法支持完整xpath语法中的表达式,以及定制的扩展函数. xpath()方法 对于ElementTree,xpath 方法对文档(绝对路径)或者根节点执行全局(相对路径)…
快速上手(官网地址:http://www.python-requests.org/en/master/user/quickstart/) 发送请求 首先导入Requests模块 import requests 试着获取一个网页 r = requests.get('https://api.github.com/events') 返回的 r 是 Response 对象,可以从这个对象中获得所有信息. Requests 简单的 API 意味着所有 HTTP 请求类型都是显而易见的.例如,可以这样发送一…
按照上一篇文章中我们将代码放到远程主机是通过拷贝或者git的方式,但是如果考虑到我们又多台远程主机的情况,这种方式就比较麻烦,那有没有好用的方法呢?这里其实可以通过scrapyd,下面是这个scrapyd的github地址:https://github.com/scrapy/scrapyd 当在远程主机上安装了scrapyd并启动之后,就会再远程主机上启动一个web服务,默认是6800端口,这样我们就可以通过http请求的方式,通过接口的方式管理我们scrapy项目,这样就不需要在一个一个电脑连…
专栏目录: Python爬虫与数据分析之python教学视频.python源码分享,python Python爬虫与数据分析之基础教程:Python的语法.字典.元组.列表 Python爬虫与数据分析之进阶教程:文件操作.lambda表达式.递归.yield生成器 Python爬虫与数据分析之模块:内置模块.开源模块.自定义模块 Python爬虫与数据分析之爬虫技能:urlib库.xpath选择器.正则表达式 Python爬虫与数据分析之京东爬虫实战:爬取京东商品并存入sqlite3数据库 Py…
python爬虫-基础入门-python爬虫突破封锁 >> 相关概念 >> request概念:是从客户端向服务器发出请求,包括用户提交的信息及客户端的一些信息.客户端可通过HTML表单或在网页地址后面提供参数的方法提交数据.让后通过request对象的相关方法来获取这些数据.request的各种方法主要用来处理客户端浏览器提交的请求中的各项参数和选项.而python爬虫中的request其实就是通过python向服务器发出request请求,得到其返回的信息. >>…
python爬虫-基础入门-爬取整个网站<3> 描述: 前两章粗略的讲述了python2.python3爬取整个网站,这章节简单的记录一下python2.python3的区别 python2.x 使用类库: >> urllib 库 >> urllib2 库 python3.x 使用的类库: >> urllib 库 变化: -> 在python2.x中使用import urllib2 ----- 对应的,在python3.x 中会使用import url…
python爬虫-基础入门-爬取整个网站<2> 描述: 开场白已在<python爬虫-基础入门-爬取整个网站<1>>中描述过了,这里不在描述,只附上 python3 的代码. python3 脚本代码: #-*- coding: utf-8 -*- import urllib.request def baiduNet() : response = urllib.request.urlopen("http://www.baidu.com") netco…
python爬虫-基础入门-爬取整个网站<1> 描述: 使用环境:python2.7.15 ,开发工具:pycharm,现爬取一个网站页面(http://www.baidu.com)所有数据. python代码如下: # -*- coding: utf-8 -*- import urllib2 def baiduNet() : request = urllib2.Request("http://www.baidu.com") response = urllib2.urlop…
入门读物 <Python基础教程>(Beginning Python From Novice to Professional) <Python学习手册>(Learning Python) <Python编程>(Programming Python) <Python Cookbook> <Python程序设计>(Python Programming: An Introduction to Computer Science) <Modern P…