爬虫

python爬虫----(2. scrapy框架)

纵饮孤独 提交于 2020-01-07 20:07:22
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Scrapy框架,Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。 刚开始学习这个框架。不太好评论。只是感觉这个框架有些Java的感觉,需要太多的其他模块的支持。 (一)创建 scrapy 项目 # 使用 scrapy startproject scrapy_test ├── scrapy_test │ ├── scrapy.cfg │ └── scrapy_test │ ├── __init__.py │ ├── items.py │ ├── pipelines.py │ ├── settings.py │ └── spiders │ ├── __init__.py # 进行创建 scrapy 项目 (二)说明 scrapy.cfg: 项目配置文件 items.py: 需要提取的数据结构定义文件 pipelines.py:管道定义,用来对items里面提取的数据做进一步处理,如保存等 settings.py: 爬虫配置文件 spiders: 放置spider的目录 (三)依赖包 依赖包比较麻烦。 # python-dev 包的安装 apt-get install python-dev #

Python爬虫小实践:寻找失踪人口,爬取失踪儿童信息并写成csv文件,方便存入数据库

余生颓废 提交于 2019-12-25 22:09:11
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 前两天有人私信我,让我爬这个网站,http://bbs.baobeihuijia.com/forum-191-1.html上的失踪儿童信息,准备根据失踪儿童的失踪时的地理位置来更好的寻找失踪儿童,这种事情本就应该义不容辞,如果对网站服务器造成负荷,还请谅解。 这次依然是用第三方爬虫包BeautifulSoup,还有Selenium+Chrome,Selenium+PhantomJS来爬取信息。 通过分析网站的框架,依然分三步来进行。 步骤一:获取http://bbs.baobeihuijia.com/forum-191-1.html这个版块上的所有分页页面链接 步骤二:获取每一个分页链接上所发的帖子的链接 步骤三:获取每一个帖子链接上要爬取的信息,编号,姓名,性别,出生日期,失踪时身高,失踪时间,失踪地点,以及是否报案 起先用的BeautifulSoup,但是被管理员设置了网站重定向,然后就采用selenium的方式,在这里还是对网站管理员说一声抱歉。 1、获取http://bbs.baobeihuijia.com/forum-191-1.html这个版块上的所有分页页面链接 通过分析:发现分页的页面链接处于<div class="pg">下,所以写了以下的代码 BeautifulSoup形式: [python

服务器反爬虫攻略:Apache/Nginx/PHP禁止某些User Agent抓取网站

北城余情 提交于 2019-12-25 11:57:09
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 我们都知道网络上的爬虫非常多,有对网站收录有益的,比如百度蜘蛛(Baiduspider),也有不但不遵守robots规则对服务器造成压力,还不能为网站带来流量的无用爬虫,比如宜搜蜘蛛(YisouSpider)。最近张戈发现nginx日志中出现了好多宜搜等垃圾的抓取记录,于是整理收集了网络上各种禁止垃圾蜘蛛爬站的方法,在给自己网做设置的同时,也给各位站长提供参考。 一、Apache ①、通过修改 .htaccess文件 修改网站目录下的.htaccess,添加如下代码即可(2种代码任选): 可用代码 (1): RewriteEngine On RewriteCond %{HTTP_USER_AGENT} (^$|FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|YisouSpider

TinySpider实战之-Visual Paradigm教学相关文档下载

☆樱花仙子☆ 提交于 2019-12-19 19:16:05
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Visual Paradigm 是一个非常棒的UML绘图工具,需要对它了解的,可以直接看官网,在此不做更多介绍,最近要使用它来做一些设计,它有非常完备的在线 教学 ,写得非常不错。这个时候问题来了,这些教学非常多,而且如果所有人都访问外网的话及学习效率都比较低。通过观察,发现里面的所有文章都有PDF可以下载,而且里面的示例也可以下载,呵呵,这就好办了,做个程序把它抓下来不就解决了?于是把此问题交给 HulkZ 同学去干了, HulkZ 同学花了半天时间交工,我看了下,发现虽然局部有优化的地方,但是总体还是可以的,于是就写这篇文章做个说明。 注:HulkZ同学还没有大学毕业,正在大学4年级学习。 第一步:教学首页的处理 public class VisualParadigmMain { public static void main(String[] args) throws Exception { Spider spider = new SpiderImpl("UTF-8"); Watcher watcher = new WatcherImpl(); watcher.addProcessor(new VisualParadigmMainProcessor()); QuickNameFilter<HtmlNode

python-19:使用正则表达式从源码中获取想要的内容

半腔热情 提交于 2019-12-17 12:34:21
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> "使用正则表达式从源码中获取想要的内容" 这是python爬虫的第二个重要内容,第一个是怎么分析网页源码,包括使用各种工具分析网页源码 首先还是确定我们要从网页中获取什么内容,希望大家还没有忘记 "发布人,发布内容,点赞数,评论数" 为了能更容易的上手,我这里先跟大家说两个常用的匹配公式,毕竟在很多很多的匹配中,用这两个公式已经能够满足我们的需求 1. .*? 是一个固定的搭配,.和*代表可以匹配任意无限多个字符,加上?表示使用非贪婪模式进行匹配,也就是我们会尽可能短地做匹配,以后我们还会大量用到 .*? 的搭配 2. (.*?)加了一个括号表示将匹配到的内容返回,一个(.*?)代表一个分组,就是一个返回来的值,如果在这个正则表达式中我们匹配了4个分组,在后面的遍历item中,item[0]就代表第一个(.*?)所指代的内容,item[1]就代表第二个(.*?)所指代的内容,以此类推 好了,好好记住这两个公式代表的含义,然后我们开始正则表达式匹配吧 为了简单起见,这里使用获取发布人信息作为例子,因为贴上太多的网页源码很容易会乱 首先对例子中出现的发布人信息感到抱歉,本无意冒犯 --------------------带有发布人信息的网页源码--------------------------- <div

网络爬虫之Robots协议

↘锁芯ラ 提交于 2019-12-17 00:47:58
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 一.什么是Robots协议 Robots协议的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。 一句话概括就是,站点与搜索引擎爬虫之间的"君子协议"。 二.如何使用Robots协议 一般有两种方法。 (1)在网站的根目录下放置一个文件,起名为 robots.txt ,其中规定了哪些内容可以爬取和哪些内容不想被抓取: robots.txt 必须放在站点的根目录下,文件名必须小写。在 robots.txt 文件中,至少要有一条 Disallow 记录。如果 robots.txt 文件为空,则允许所有搜索引擎Robots都是开放的。 robots.txt 文件中的记录通常以一行或多行 User-agent 开始,后面加上若干 Disallow 行,解释如下: a. User-agent :指定搜索引擎 robots 的名字,常见的有Baiduspider、Sogouspider、360Spider等。如果有多条 User-agent 记录,说明有多个robots会受到该协议的限制。至少要有一条 User-agent 记录。如果该值为 * ,则该协议对所有爬虫都有效。 b. Disallow

Spark数据挖掘-基于 LSA 隐层语义分析理解APP描述信息(1)

北城以北 提交于 2019-12-14 21:09:35
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Spark数据挖掘-基于 LSA 隐层语义分析理解APP描述信息(1) 1 前言 结构化数据处理比较直接,然而非结构化数据(比如:文本、语音)处理就比较具有挑战。对于文本现在比较成熟的技术是搜索引擎,它可以帮助人们从给定的词语中快速找到包含关键词的文本。但是,一些情况下人们希望找到某一个概念的文本,而不关心文本里面是否包含某个关键词。这种情况下应该如何是好? 隐语义分析(Latent Semantic Analysis,简称:LSA)是一种寻找更好的理解语料库中词和文档之间关系的自然语言和信息检索的技术。它试图通过语料库提取一系列概念。每个概念对应一系列单词并且通常对应语料库中讨论的一个主题。先抛开数据而言,每一个概念由三个属性构成: 每个文档与概念之间的相关性 每个单词与概念之间的相关性 概念描述数据集变化程度(方差)的重要性得分 比如:LSA可能会发现某个概念和单词“股票”、“炒股”有很高的相关性并且和“互联网金融系列文章”有很高的相关性。通过选择最重要的概念,LSA可以去掉一些噪音数据。 在很多场合都可以使用这种简洁的表示,比如计算词与词、文档与文档、词与文档的相似性。通过LSA得到的关于概念的得分,可以对语料库有更加深入的理解,而不只是简单的计算单词或者共现词。这种相似性度量可以解决同义词查询

HtmlUnit 网络爬虫 菜鸟的学习笔记(二)

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-14 18:23:59
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 这次我以爬新浪微博为例,这个过程太纠结了,参考了好多大神的帖子,不过还是遗留了很多问题,我们慢慢来看,希望大神帮于指正,我的方法暂时来说还是比较挫的 登陆问题 爬新浪微博首先要登陆,之前爬的妹纸网站,由于不用登陆,所以没这一步,但是爬新浪微博我们必须要先登录,但是要涉及到一个问题,那就是验证码,验证码从我现在百度到的,和自己的理解,感觉暂时还是不能解决的,除非手工输入,因为本身验证码就是防止恶意登陆,防爬虫的,所以建议想试试的朋友用暂时用不输入验证码的账号试试( 关于验证码,期盼大神可以给些提示 ) 下面是demo代码 WebClient webClient = new WebClient(); webClient.getOptions().setJavaScriptEnabled(true); webClient.getOptions().setCssEnabled(false); webClient.setAjaxController(new NicelyResynchronizingAjaxController()); webClient.getOptions().setThrowExceptionOnScriptError(false); HtmlPage htmlPage = null; try {

API例子:用Python驱动Firefox采集网页数据

霸气de小男生 提交于 2019-12-11 11:42:38
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> ####1,引言#### 本文讲解怎样用Python驱动Firefox浏览器写一个简易的网页数据采集器。开源Python即时网络爬虫项目将与Scrapy(基于twisted的异步网络框架)集成,所以本例将使用Scrapy采集淘宝这种含有大量ajax代码的网页数据,但是要注意本例一个严重缺陷:用Selenium加载网页的过程发生在Spider中,破坏了Scrapy的架构原则。所以,本例只是为了测试Firefox驱动和ajax网页数据采集这两个技术点,用于正式运行环境中必须予以修改,后续的文章将专门讲解修正后的实现。 请注意,本例用到的xslt文件是通过MS谋数台保存提取器后,通过API接口获得,一方面让python代码变得简洁,另一方面,节省调试采集规则的时间。详细操作请查看 Python即时网络爬虫:API说明 ####2,具体实现#### 2.1,环境准备 需要执行以下步骤,准备Python开发和运行环境: 安装Python-- 官网 下载安装并部署好环境变量 (本文使用Python版本为3.5.1) 安装lxml-- 官网库 下载对应版本的.whl文件,然后命令行界面执行 "pip install .whl文件路径" 安装Scrapy--命令行界面执行 "pip install Scrapy",详细请参考

记录一次乌云漏洞裤搭建过程

爱⌒轻易说出口 提交于 2019-12-10 07:21:34
记录一次乌云漏洞裤搭建过程,分享给需要用到的朋友。 首先说明该漏洞库来源于乌云公开漏洞采集,由网友分享得此。网上也有一些网站已经提供了查询功能,那为啥还要自己在本地折腾搭建呢,大家都是明白人,就不说糊涂话,在互联网上你今天能看到的,未必明天还能看到。 1.对于本地搭建的用户完全可以将漏洞裤下载下来,然后进行抓取存入数据库,写个小脚本进行检索就可以了。在git上也有网友分享完整的虚拟机文件,可以直接下载下来接入使用。在服务器上下载,尤其是linux用户,在此记录下载过程。 chrome 安装 BaiduExporter 插件进行解析百度云盘资料地址。 拿到aria2c的下载地址后,直接用执行下载,没有aria2c的yum安装一下就行了。建议最好一次导出一个链接然后进行下载,下载完毕后,再重新获取链接下载,防止文件还没有下载完,cookie过期了。 aria2c -c -s10 -k1M -x10 -o "WEB安全/WooYun_Bugs(漏洞库)/readme.md" --header "User-Agent: netdisk;5.3.4.5;PC;PC-Windows;5.1.2600;WindowsBaiduYunGuanJia" --header "Referer: http://pan.baidu.com/disk/home" --header "Cookie: