网络爬虫
网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。
肥叔菌
本博客主要用于记录学习过程中的笔记,每隔一段时间,博主将会将精华内容整合发到知乎、简书上。欢迎关注博主肥叔菌在其他平台上的账号,谢谢。
B站:https://space.bilibili.com/456254145
segmentfault:https://segmentfault.com/u/feishujun/articles
简书:https://www.jianshu.com/u/67bab078551a
展开
-
Python实战量化交易分类
量化投资:趋势性交易、市场中性、高频交易。趋势性交易:期货CTA市场中性:Alpha策略(对冲、量化选股、择时)、统计套利高频交易:程序化交易趋势性交易适合一些主观交易的高手,用技术指标作为辅助工具在市场中如鱼得水的,但如果只用各种技术指标或指标组合作为核心算法构建模型,从未见过能长期盈利的。一般也会做一些量化分析操作,使用编程如python/matlab市场中性:在任何市场环境下风险更低,收益稳定性更高,资金容量更大。适合一些量化交易者,发现市场中的alpha因子赚取额外收益,例如原创 2021-09-06 23:39:49 · 347 阅读 · 0 评论 -
爬虫实战(一)-新版知乎网页分析获取登录url
登录DIV定位首先通过知乎LOGO定位到登录DIV所在父DIV为class(SignFlowHomepage-content),登录DIV为class(css-zvnmar)的DIV和知乎LOGO的img标签并列。登录DIV中包含form标签,该form标签包含了从免密码登录到未注册手机验证后自动登录的div。我们后续需要定位到密码登录,使用密码登录而不用短信验证码登录。密码登录Div和免密码登录的DIV是并列的,从代码中可以看出免密码登录DIV比密码登录DIV多了一个SignFlow-tab–原创 2021-08-15 12:09:23 · 985 阅读 · 0 评论 -
爬虫实战(一)-新版知乎
https://www.cnblogs.com/yanshw/p/10950899.html转载 2021-08-15 10:53:03 · 574 阅读 · 0 评论 -
Scrapy学习笔记-scrapy的cmdline.py
scrapy的__main__.py从scrapy.cmdline中导入execute函数,并执行from scrapy.cmdline import executeif __name__ == '__main__': execute()cmdline.py中的execute函数源码如下所示,这里主要的工作是进行cmd命令字典的构建。def execute(argv=None, settings=None): if argv is None: argv = sys.原创 2021-06-27 21:10:41 · 967 阅读 · 0 评论 -
Scrapy学习笔记-scrapy的__main__.py和__init__.py
在Python工程里,当python检测到一个目录下存在__init__.py文件时,python就会把它当成一个模块(module)。Module跟C++的命名空间和Java的Package的概念很像,都是为了科学地组织化工程,管理命名空间。__init__.py的设计原则__init__.py的原始使命是声明一个模块,所以它可以是一个空文件。在__init__.py中声明的所有类型和变量,就是其代表的模块的类型和变量。我们在利用__init__.py时,应该遵循如下几个原则:A、不要污染现有的命名原创 2021-06-11 23:31:33 · 2010 阅读 · 2 评论 -
Gerapy学习笔记-爬虫管理框架 win linux端分布式部署Scrapy爬虫脚本
内容介绍本章带你学习基于 Python3 的 Gerapy 爬虫框架 项目部署使用教程。代码内容基于「Gerapy 爬虫管理框架」源码版本 0.9.3a2 ,更新内容会进行标记说明对应版本。Gerapy这个框架是干嘛的?将我们爬虫工程师通过Scrapy爬虫框架写好的项目整合到Django的Web环境进行统一管理的后台。简单理为一个Admin后台进行控制我们写好的爬虫脚本,进行有针对性的网络数据采集(比如固定时间、固定间隔、或者一次性采集)方便管理,并且对项目进行简单的项目管理,对于了解Django的原创 2021-05-23 21:02:17 · 348 阅读 · 0 评论 -
Scrapy学习笔记-Scrapyd Deploy
部署您的项目需要对其进行优化,并通过addversion.json endpoint 上传。您可以手动执行此操作,但最简单的方法是使用scrapyd客户机提供的scrapyd部署工具,它将为您完成所有操作。APIdaemonstatus.json检查服务的加载状态load status,支持的Request方法GET,比如curl http://localhost:6800/daemonstatus.json,输出{ "status": "ok", "running": "0", "pending":原创 2020-12-20 21:09:18 · 3862 阅读 · 0 评论 -
Scrapy学习笔记-Scrapyd Installation
RequirementsPython 2.6 or aboveTwisted 8.0 or aboveScrapy 0.17 or aboveInstalling Scrapyd(generic way)从PyPI安装:pip install scrapyd如果计划在Ubuntu中部署Scrapyd,Scrapyd附带了官方的Ubuntu软件包(见下文),用于将其作为系统服务安装,简化了管理工作。其他发行版和操作系统(Windows、Mac OS X)还没有特定的软件包,除了配置路径并使其能够作原创 2020-12-20 18:39:24 · 3328 阅读 · 0 评论 -
Scrapy学习笔记-Scrapyd Overview
OverviewProjects and versionsScrapyd可以管理多个项目,每个项目都可以上载多个版本,但只有最新的版本将用于启动新的spider。用于版本名的一个常见(也是有用的)约定是用于跟踪您的Scrapy项目代码的版本控制工具的修订号。例如:r23。版本没有按字母顺序进行比较,而是使用了一种更聪明的算法(distutils也使用相同的算法),例如,r10与r9相比更大。How Scrapyd worksScrapyd是一个应用程序(通常作为守护进程运行),它监听spider运行原创 2020-12-20 13:34:32 · 3271 阅读 · 0 评论 -
Scrapy学习笔记-Scrapy例子和quotes网页分析
为了向您展示Scrapy带来了什么,我们将使用最简单的运行爬虫的方法向您介绍Scrapy Spider的示例。将下面代码放在文本文件中,将其命名为quotes_spider.py之类的名称,然后使用runspider命令运行程序:scrapy runspider quotes_spider.py -o quotes.jsonimport scrapyclass QuotesSpider(s...原创 2020-04-16 11:49:06 · 10989 阅读 · 0 评论 -
Scrapy学习笔记-Scrapy入门之创建爬虫
Creating a project在开始抓取之前,您将必须设置一个新的Scrapy项目。 输入您要存储代码并运行的目录:scrapy startproject tutorialAnacoda下使用这将创建一个包含以下内容的教程目录:Spiders是您定义的类,Scrapy用于从网站(或一组网站)中获取信息。 他们必须继承Spider的子类,并定义要发出的初始请求,可以选择如何跟随页面...原创 2020-04-17 21:00:49 · 8888 阅读 · 0 评论 -
Scrapy学习笔记-Scrapy入门Following links
<ul class="pager"> <li class="next"> <a href="/page/2/">Next <span aria-hidden="true">→</span></a> </li></ul>Scrapy支持CSS扩展,可...原创 2020-04-19 21:30:38 · 8912 阅读 · 0 评论 -
Scrapy学习笔记-基本库的使用requests
使用get方法成功实现一个GET请求,返回类型是requests .models.Response ,响应体的类型是字符串str,Cookies的类型是RequestsCookieJar 。给GET请求添加参数r.text返回类型实际上是str类型,但是它很特殊,是JSON格式的。所以,如果想直接解析返回结果,得到一个字典格式的话,可以直接调用json方法,返回结果是JSON 格式的字...原创 2020-04-30 23:34:59 · 9633 阅读 · 0 评论 -
Scrapy学习笔记-Scrapy入门Spiders
Spiders是定义如何爬取某个站点(或一组站点)的类,包括如何执行爬网(即跟踪链接)以及如何从其页面中提取结构化数据(即抓取项)。 换句话说,Spider是您定义自定义行为的地方,该行为用于爬网和解析特定站点(或在某些情况下为一组站点)的页面。对于spiders,抓取周期经历如下过程:首先,生成初始请求以爬网第一个URL,然后指定要调用的回调函数,并从这些请求中下载响应。要执行的第一个请求...原创 2020-05-03 23:01:18 · 8935 阅读 · 0 评论 -
Scrapy学习笔记-Selectors一
抓取网页时,最需要执行的任务是从HTML源中提取数据。 有几种库可以实现此目的,例如:BeautifulSoup是在Python程序员中非常流行的Web抓取库,它基于HTML代码的结构构造一个Python对象,并且还可以很好地处理不良标记,但是它有一个缺点:它很慢。lxml是具有基于ElementTree的pythonic API的XML解析库(它也解析HTML)。 (lxml不是Python标准...原创 2020-05-04 23:41:13 · 9093 阅读 · 0 评论 -
Scrapy学习笔记-案例热干面销量之数据获取
搜集整理淘宝网关于热干面的100页商品数据,使用Python进行整理分析。整个数据分析的过程分为以下三步:数据获取、数据清洗、数据可视化。数据获取 使用selenium抓取淘宝商品首先确定爬虫的策略,淘宝的商品页面数据是通过Ajax加载的,但是这些Ajax接口和参数比较复杂,可能会包含加密秘钥等,所以想要自己分析Ajax并构造参数,还是比较困难的。对于这种页面,最方便快捷的方法就是通过Sele...原创 2020-05-06 22:53:40 · 8395 阅读 · 0 评论 -
Scrapy学习笔记-利用requests库抓取猫眼电影排行
如上图就是猫眼电影排行的网页,网址如下所示:https://maoyan.com/board/4。我们要利用requests库来抓取该网页中电影的结构化数据。原创 2020-05-14 15:46:36 · 8316 阅读 · 0 评论 -
Scrapy学习笔记-使用Crontab定期执行爬虫
通过前面的博客的讲解,我们学会了编写自己的第一个爬虫。下面介绍在redhat 6.5上使用Crontab定期执行该爬虫。首先按照前面的步骤新建爬虫项目,然后再新建一个start.sh脚本文件。测试crontab编写脚本,并测试效果。我们先测试一下crontab的执行效果,在脚本文件中写上如下代码cd /home/soft/tutorial echo test >> ./tes...原创 2020-04-24 20:34:12 · 8939 阅读 · 0 评论 -
Scrapy学习笔记-体系结构
下图概述了Scrapy体系结构及其组件,并概述了系统内部发生的数据流(由红色箭头显示)。 下面包括对这些组件的简要说明,以及有关它们的更多详细信息的链接。Scrapy中的数据流由执行引擎控制,也就是图中菱形的框,如下所示:引擎会从爬虫组件获取初始请求以进行爬网。引擎在调度程序中调度请求,并请求下一个要爬网的请求。调度程序将下一个请求返回给引擎。引擎通过下载器中间件将请求发送到下载器(...原创 2020-04-15 21:48:57 · 8806 阅读 · 0 评论 -
Scrapy学习笔记-解决Forbidden by robots.txt错误
去setting中设置ROBOTSTXT_OBEY为false。Scrapy默认遵守robots协议,所以针对某些网站,设置了robots.txt的规则,不允许爬取其中某些资源,则Scrapy就不会去爬取。通过去setting中设置ROBOTSTXT_OBEY为false:ROBOTSTXT_OBEY = False 即可不遵守协议,而去爬取对应页面内容了。...原创 2020-04-23 19:55:58 · 9363 阅读 · 0 评论 -
Scrapy学习笔记-基本库的使用urllib
了解一下urllib库,它是Python内置的HTTP 请求库,也就是说不需要额外安装即可使用它,包含如下4 个模块。发送请求使用urllib的request模块,我们可以方便地实现请求的发送并得到响应。本节就来看下它的具体用法。urlopenurllib.request模块提供了最基本的构造HTTP请求的方法, 利用它可以模拟浏览器的一个请求发起过程, 同时它还带有处理授权验证( au...原创 2020-04-22 15:55:56 · 9135 阅读 · 1 评论 -
Scrapy学习笔记-Anaconda下安装
安装 Scrapy参考自Scrapy的官方手册:https://docs.scrapy.org/en/latest/intro/install.htmlScrapy在CPython(默认Python实现)和PyPy(从PyPy 5.9开始)下的Python 3.5或更高版本上运行。Anaconda下安装如果您使用的是Anaconda或Miniconda,则可以从conda-forge渠道安...原创 2020-04-15 12:32:28 · 8913 阅读 · 1 评论 -
haipproxy学习分析-haipproxy架构及流程说明
这篇文章的目的是阐述haipproxy的主要架构和流程。该项目关键部分是基于Scrapy和Redis的分布式爬虫,用作IP抓取和校验,对应于项目的crawler基于Redis实现的分布式任务调度工具,对应于项目的scheduler和redis_util.pyCrawler分为代理抓取和校验,两者实现思想类似,主要使用Scrapy的spider_idle信号和DontCloseSpider...转载 2020-04-22 12:00:34 · 9029 阅读 · 0 评论 -
Scrapy学习笔记-案例热干面销量之数据清洗和数据可视化
此处我们对数据进行以下的处理以方便后续的数据分析和可视化工作:去除重复数据去除购买人数为空的记录类型转换:将购买人数转换为数值型数据字段扩充:增加收入列,价格*购买人数=收入字段扩充:增加商品价格分箱数据提取省份名称字段。对商品名称进行分词处理。# 读入数据df_all = pd.read_excel('热干面数据.xlsx') df = df_all.copy()# 去除重复值df.drop_duplicates(inplace=True)# 删除购买人数为空的记录df原创 2020-05-15 11:09:53 · 8898 阅读 · 1 评论 -
Scrapy学习笔记-Ajax数据爬取
数据加载是一种异步加载方式,原始的页面最初不会包含某些数据,原始页面加载完后,会再向服务器请求某个接口获取数据,然后数据才被处理从而呈现到网页上,这其实就是发送了一个Ajax请求。如果遇到这样的页面,直接利用requests等库来抓取原始页面,是无法获取到有效数据的,这时需要分析网页后台向接口发送的Ajax 请求,如果可以用requests来模拟Ajax请求,那么就可以成功抓取了。...原创 2020-05-22 23:07:31 · 9437 阅读 · 0 评论 -
Scrapy学习笔记-PhantomJS 的Windows下安装
PhantomJS是一个无界面的、可脚本编程的WebKit浏览器引擎,它原生支持多种Web标准: DOM操作、css 选择器、JSON 、Canvas 以及SVG 。Selenium支持PhantomJS ,这样在运行的时候就不会再弹出一个浏览器了。而且PhantomJS的运行效率也很高,还支持各种参数配置,使用非常方便。下载PhantomJS我们需要在官方网站下载对应的安装包, PhantomJS 支持多种操作系统,比如Windows 、Linux 、Mac 、FreeBSD 等,我们可以选择对应的平原创 2020-05-27 22:01:28 · 8229 阅读 · 0 评论