python爬虫

基于Scrapy分布式爬虫打造搜索引擎

眉间皱痕 提交于 2020-01-28 00:45:47
一,学习目的 获取想要的知识 二,环境配置和基础知识铺垫 1.pycharm 的安装和简单使用 ide : pycharm 数据库:mysql , redis , elasticsearch 开发环境:virtualenv 2.mysql 和navicat的安装和使用 windows下安装python 虚拟环境的安装和配置 3级标题 爬取真实数据 Scrapy 突破反爬虫技术 Scrapy进阶开发 Scrapy redis分布式爬虫 elasticsearch django 实现搜索引擎 2级标题 来源: CSDN 作者: shlshlshk 链接: https://blog.csdn.net/shlshlshk/article/details/104095728

爬虫之scrapy框架

本小妞迷上赌 提交于 2020-01-27 13:07:56
一 scrapy框架简介 1 介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速、简单、可扩展的方式从网站中提取所需的数据。但目前Scrapy的用途十分广泛,可用于如数据挖掘、监测和自动化测试等领域,也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。Scrapy 是基于twisted框架开发而来,twisted是一个流行的事件驱动的python网络框架。因此Scrapy使用了一种非阻塞(又名异步)的代码来实现并发。 整体架构大致如下: """ Components: 1、引擎(EGINE) 引擎负责控制系统所有组件之间的数据流,并在某些动作发生时触发事件。有关详细信息,请参见上面的数据流部分。 2、调度器(SCHEDULER) 用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可以想像成一个URL的优先级队列, 由它来决定下一个要抓取的网址是什么, 同时去除重复的网址 3、下载器(DOWLOADER) 用于下载网页内容, 并将网页内容返回给EGINE,下载器是建立在twisted这个高效的异步模型上的 4、爬虫(SPIDERS) SPIDERS是开发人员自定义的类,用来解析responses,并且提取items

Scrapy多线程爬虫原理

喜你入骨 提交于 2020-01-27 06:49:19
一:多线程爬虫原理 二:Scrapy框架 定义: Scrapy是基于Python实现,方便爬取网站数据、提取结构性数据的应用框架。 底层: 使用Twisted异步网络框架来处理网络通讯,加快下载速度。 不用手动实现异步框架,包含了多种中间件接口,非常灵活。 Scrapy 运行架构流程图: 组件说明: Scrapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。 Scheduler(调度器): 负责接收引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。 Downloader(下载器):负责下载引擎发送的所有Requests请求,并将其获取到的Responses交还给引擎,由引擎交给Spider来处理。 Spider(爬虫):负责处理所有Responses,分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入调度器 Item Pipeline(管道):负责处理Spider中获取到的Item,并进行后期处理(如详细分析、过滤、存储等). Downloader Middlewares(下载中间件):类似一个可以自定义扩展下载功能的组件。 Spider Middlewares(Spider中间件)

5、爬虫系列之scrapy框架

梦想的初衷 提交于 2020-01-26 23:55:19
一 scrapy框架简介 1 介绍 (1) 什么是Scrapy?   Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,非常出名,非常强悍。所谓的框架就是一个已经被集成了各种功能(高性能异步下载,队列,分布式,解析,持久化等)的具有很强通用性的项目模板。对于框架的学习,重点是要学习其框架的特性、各个功能的用法即可。 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速、简单、可扩展的方式从网站中提取所需的数据。但目前Scrapy的用途十分广泛,可用于如数据挖掘、监测和自动化测试等领域,也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。Scrapy 是基于twisted框架开发而来,twisted是一个流行的事件驱动的python网络框架。因此Scrapy使用了一种非阻塞(又名异步)的代码来实现并发。 整体架构大致如下: ''' Components: 1、引擎(EGINE) 引擎负责控制系统所有组件之间的数据流,并在某些动作发生时触发事件。有关详细信息,请参见上面的数据流部分。 2、调度器(SCHEDULER) 用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可以想像成一个URL的优先级队列,

python爬虫:Requests库(一)

别说谁变了你拦得住时间么 提交于 2020-01-26 23:46:53
python爬虫:Requests库(一) from mooc网络爬虫与信息提取 下面是爬虫的基本框架 import requests def get_test_html ( url ) : try : r = requests . get ( url , timeout = 30 ) # 如果时间超过30则报错 r . raise_for_status ( ) # 返回的是访问状态,200则成功,否则将会报错 r . encoding = r . apparent_encoding return r . text except : return '发生异常' if __name__ == '__main__' : url = 'http://www.baidu.com' print ( get_test_html ( url ) ) 基本方法的展示 post 提交的数据放到form表单里,如果data只是一个字符串则在data里面 requests库的一些基本方法与属性 kwargs里包含的参数 params data json headers cookies auth files 等 timeout proxies 代理 来源: CSDN 作者: Jocker_Tong 链接: https://blog.csdn.net/Weary_PJ/article/details

python爬虫之字体反爬

被刻印的时光 ゝ 提交于 2020-01-26 20:15:49
一、什么是字体反爬?   字体反爬就是将关键性数据对应于其他Unicode编码,浏览器使用该页面自带的字体文件加载关键性数据,正常显示,而当我们将数据进行复制粘贴、爬取操作时,使用的还是标准的Unicode字符映射,解析后就是干扰性数据,以猫眼电影为例: 上图表明,浏览器正常渲染的数据在调试界面显示为错误的数据,即使我们复制粘贴也是这样(猜测复制粘贴的是Unicode编码)显示,这样就起到了反爬的效果。 二、解决方案   1、找到对应的字体文件 点击箭头指向的css文件 箭头指向的链接就是我们要寻找的字体文件,我们必须把这个字体文件下载下来进行分析,找到对应关系 如果字体文件是固定的,我们可以手动分析,然后创建一个映射表就解决了,但是字体文件如果每请求一次就会变化,这种解决方式就不行了。 我们刷新一下链接,再下载一个字体文件对比一下,看是否变化了 对比后,不难发现,字体文件完全不同了。   2、绕过字体反爬 目前为止,我爬过的数据从来源可以分为PC端数据、移动端Web数据和APP数据,既然PC端有字体反爬,我们可以从移动端尝试一下。 先从简单的移动端Web数据入手,可以先使用selenium,加一个手机浏览器的User-Agent,就可以在PC端浏览器显示与手机浏览器相同的效果,下图表示在移动端Web数据是没有使用字体反爬措施得。 1 from selenium import

python爬虫 --爬取链家项目【初级版】

浪尽此生 提交于 2020-01-26 14:30:40
爬取链家项目需要用到代理池 ,代理池具体怎么设置可以去翻我之前的文章 import hashlib import requests from lxml import etree import pymongo import time , re def get_proxies ( ) : try : response = requests . get ( 'http://localhost:5000/get' ) proxies = { 'http' : 'http://' + response . text } return proxies except Exception : return None #请求url,获取xpath def get_xpath_by_requests ( url , proxies ) : headers = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36' , 'Referer' : 'https://bj.lianjia.com/?utm_source=baidu&utm_medium=pinzhuan&utm_term=biaoti

Scrapy入门教程

那年仲夏 提交于 2020-01-26 08:27:21
关键字: scrapy 入门教程 爬虫 Spider 作者: http://www.cnblogs.com/txw1958/ 出处: http://www.cnblogs.com/txw1958/archive/2012/07/16/scrapy-tutorial.html 在这篇入门教程中,我们假定你已经安装了Scrapy。如果你还没有安装,那么请参考 安装指南 。 我们将使用开放目录项目(dmoz)作为抓取的例子。 这篇入门教程将引导你完成如下任务: 创建一个新的Scrapy项目 定义提取的Item 写一个Spider用来爬行站点,并提取Items 写一个Item Pipeline用来存储提取出的Items Scrapy是由Python编写的。如果你是Python新手,你也许希望从了解Python开始,以期最好的使用Scrapy。如果你对其它编程语言熟悉,想快速的学习Python,这里推荐 Dive Into Python 。如果你对编程是新手,且想从Python开始学习编程,请看下面的 对非程序员的Python资源列表 。 新建工程 在抓取之前,你需要新建一个Scrapy工程。进入一个你想用来保存代码的目录,然后执行: Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp.

爬虫前提——正则表达式语法以及在Python中的使用

一世执手 提交于 2020-01-25 23:44:39
正则表达式是用来处理字符串的强大工具,他并不是某种编程云。 正则表达式拥有独立的承受力引擎,不管什么编程语言,正则表达式的语法都是一样的。 正则表达式的匹配过程 1.一次拿出表达式和文本中的字符比较。 2.如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败。 3.如果表达式中有两次或便捷,这个过程会稍微有一些不同。 下面举例一些符号 [....]  字符集(字符类)。对应的位置可以是字符集中任意字符。字符集中的字符可以猪哥列出,也可以给出范围,如[abc]或[a-c]。第一个字符如果是^则表示取反,如果[^abc]表示不是abc的其他字符。所有的特殊字符在字符集中都是去某原有的特殊含义。在字符集中如果是用]、-或^,可以在前面加上转移字符反斜杠\,或把]、-放在第一个字符,把^放在非第一个字符。 预定义字符集(可以写在字符集[....]中): \d  数字:[0-9] \D  非数字:[^\d] \s  空白符:[<空格>\t\r\n\f\v] \S  非空白符:[^\s] \w  单词字符:[A-Za-z0-9_] \W  飞单词字符:[^\w] 数量词(用在字符或(...)之后) *  匹配前一个字符0或无限次 +  匹配前一个次1次或无限次 ?  匹配前一个次0次或1次 {m}  匹配前一个字符m次 {m,n}  匹配前一个字符m至n次(多于n次则失败)  

Python爬虫:数据解析 之 xpath

故事扮演 提交于 2020-01-25 23:37:05
资料: W3C标准: https://www.w3.org/TR/xpath/all/ W3School: https://www.w3school.com.cn/xpath/index.asp 菜鸟教程: https://www.runoob.com/xpath/xpath-tutorial.html xpath教程: http://www.zvon.org/xxl/XPathTutorial/General_chi/examples.html XPATH在线测试: http://www.bejson.com/testtools/xpath/ 来源: https://www.cnblogs.com/wbyixx/p/12233532.html