网络爬虫

Python 即时网络爬虫项目: 内容提取器的定义

岁酱吖の 提交于 2019-12-11 11:45:38
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1. 项目背景 在 python 即时网络爬虫项目启动说明 中我们讨论一个数字:程序员浪费在调测内容提取规则上的时间,从而我们发起了这个项目,把程序员从繁琐的调测规则中解放出来,投入到更高端的数据处理工作中。 2. 解决方案 为了解决这个问题,我们把影响通用性和工作效率的提取器隔离出来,描述了如下的数据处理流程图: 图中“可插拔提取器”必须很强的模块化,那么关键的接口有: 标准化的输入:以标准的HTML DOM对象为输入 标准化的内容提取:使用标准的xslt模板提取网页内容 标准化的输出:以标准的XML格式输出从网页上提取到的内容 明确的提取器插拔接口:提取器是一个明确定义的类,通过类方法与爬虫引擎模块交互 3. 提取器代码 可插拔提取器是即时网络爬虫项目的核心组件,定义成一个类: gsExtractor python源代码文件及其说明文档请从 github 下载 使用模式是这样的: 实例化一个gsExtractor对象 为这个对象设定xslt提取器,相当于把这个对象配置好(使用三类setXXX()方法) 把html dom输入给它,就能获得xml输出(使用extract()方法) 下面是这个gsExtractor类的源代码 #!/usr/bin/python # -*- coding: utf-8 -*- #

API例子:用Java/JavaScript下载内容提取器

允我心安 提交于 2019-12-11 11:42:47
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1,引言 本文讲解怎样用Java和JavaScript使用 GooSeeker API 接口下载内容提取器,这是一个示例程序。什么是内容提取器?为什么用这种方式?源自Python即时网络爬虫开源项目:通过生成内容提取器,大幅节省程序员时间。具体请参看《 内容提取器的定义 》。 2, 用Java下载内容提取器 这是一系列实例程序中的一个,就目前编程语言发展来看,Java实现网页内容提取并不合适,除了语言不够灵活便捷以外,整个生态不够活跃,可选的类库增长缓慢。另外,要从JavaScript动态网页中提取内容,Java也很不方便,需要一个JavaScript引擎。用JavaScript下载内容提取器可以直接跳到第3部分的内容。 具体实现 注解: 使用Java类库 jsoup(1.8.3以上版本),可以很便利、快速的获取网页dom。 通过GooSeeker API 获取xslt(参考 1分钟快速生成用于网页内容提取的xslt ) 使用Java自带的类TransformerFactory执行网页内容转换 源代码如下: public static void main(String[] args) { InputStream xslt = null; try { String grabUrl = "http://m.58

Python即时网络爬虫项目: 内容提取器的定义(Python2.7版本)

百般思念 提交于 2019-12-11 11:42:13
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> ###1. 项目背景 在 Python即时网络爬虫项目 启动说明中我们讨论一个数字:程序员浪费在调测内容提取规则上的时间太多了(见上图),从而我们发起了这个项目,把程序员从繁琐的调测规则中解放出来,投入到更高端的数据处理工作中。 这个项目推出以后受到很大关注,因为开放源码,大家可以在现成源码基础上进一步开发。然而,Python3和Python2是有区别的, 《Python即时网络爬虫项目: 内容提取器的定义》 一文的源码无法在Python2.7下使用,本文将发布一个Python2.7的内容提取器。 ###2. 解决方案 为了解决这个问题,我们把影响通用性和工作效率的提取器隔离出来,描述了如下的数据处理流程图: 图中“可插拔提取器”必须很强的模块化,那么关键的接口有: 标准化的输入:以标准的HTML DOM对象为输入 标准化的内容提取:使用标准的xslt模板提取网页内容 标准化的输出:以标准的XML格式输出从网页上提取到的内容 明确的提取器插拔接口:提取器是一个明确定义的类,通过类方法与爬虫引擎模块交互 ###3. 提取器代码 可插拔提取器是即时网络爬虫项目的核心组件,定义成一个类: GsExtractor 适用python2.7的源代码文件及其说明文档请从 github 下载 使用模式是这样的:

Python使用xslt提取网页数据

别等时光非礼了梦想. 提交于 2019-12-11 11:38:34
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1,引言 在Python网络爬虫内容提取器一文我们详细讲解了核心部件: 可插拔的内容提取器类gsExtractor 。本文记录了确定gsExtractor的技术路线过程中所做的编程实验。这是第一部分,实验了用xslt方式一次性提取静态网页内容并转换成xml格式。 2,用lxml库实现网页内容提取 lxml是python的一个库,可以迅速、灵活地处理 XML。它支持 XML Path Language (XPath) 和 Extensible Stylesheet Language Transformation (XSLT),并且实现了常见的 ElementTree API。 这2天测试了在python中通过xslt来提取网页内容,记录如下: 2.1,抓取目标 假设要提取 集搜客官网旧版论坛 的帖子标题和回复数,如下图,要把整个列表提取出来,存成xml格式 2.2,源代码1:只抓当前页,结果显示在控制台 Python的优势是用很少量代码就能解决一个问题,请注意下面的代码看起来很长,其实python函数调用没有几个,大篇幅被一个xslt脚本占去了,在这段代码中,只是一个好长的字符串而已,至于为什么选择xslt,而不是离散的xpath或者让人挠头的正则表达式,请参看 《Python即时网络爬虫项目启动说明》

如何抓取Js动态生成数据且以滚动页面方式分页的网页

放肆的年华 提交于 2019-12-11 11:35:37
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 当我们在进行数据抓取的时候,如果目标网站是以Js的方式动态生成数据且以滚动页面的方式进行分页,那么我们该如何抓取呢? 如类似今日头条这样的网站: http://toutiao.com/ 我们可以使用 Selenium 来搞定这件事情。Selenium的设计目的虽然是用于Web应用程序 的自动化 测试,但是却非常适合用来做数据抓取,可以非常简单地绕过网站的反爬虫限制,因为Selenium直接运行在浏览器中,就像真正的用户在操作一样。 使用 Selenium,我们不但可以抓取Js动态生成数据的网页,而且可以抓取以滚动页面方式分页的网页。 首先,我们使用maven引入 Selenium依赖: <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>2.47.1</version> </dependency> 接下来就可以写代码抓取了: import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org

Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容

混江龙づ霸主 提交于 2019-12-11 11:35:22
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1,引言 在 Python网络爬虫内容提取器 一文我们详细讲解了核心部件:可插拔的内容提取器类gsExtractor。本文记录了确定gsExtractor的技术路线过程中所做的编程实验。这是第二部分,第一部分实验了用xslt方式一次性 提取静态网页内容并转换成xml格式 。留下了一个问题:javascript管理的动态内容怎样提取?那么本文就回答这个问题。 2,提取动态内容的技术部件 在上一篇 python使用xslt提取网页数据 中,要提取的内容是直接从网页的source code里拿到的。但是一些Ajax动态内容是在source code找不到的,就要找合适的程序库把异步或动态加载的内容加载上来,交给本项目的提取器进行提取。 python可以使用 selenium 执行javascript,selenium可以让浏览器自动加载页面,获取需要的数据。selenium自己不带浏览器,可以使用第三方浏览器如Firefox,Chrome等,也可以使用headless浏览器如 PhantomJS 在后台执行。 3,源代码和实验过程 假如我们要抓取 京东手机页面 的手机名称和价格(价格在网页源码是找不到的),如下图: 第一步 :利用 集搜客 谋数台 的直观标注功能,可以极快速度自动生成一个调试好的抓取规则

【Python3网络爬虫开发实战】6.4-分析Ajax爬取今日头条街拍美图【华为云技术分享】

旧时模样 提交于 2019-12-10 13:43:26
【摘要】 本节中,我们以今日头条为例来尝试通过分析Ajax请求来抓取网页数据的方法。这次要抓取的目标是今日头条的街拍美图,抓取完成之后,将每组图片分文件夹下载到本地并保存下来。 1. 准备工作 在本节开始之前,请确保已经安装好requests库。如果没有安装,可以参考第1章。 2. 抓取分析 在抓取之前,首先要分析抓取的逻辑。打开今日头条的首页 http://www.toutiao.com/,如图6-15所示。 图6-15 首页内容 右上角有一个搜索入口,这里尝试抓取街拍美图,所以输入“街拍”二字搜索一下,结果如图6-16所示。 图6-16 搜索结果 这时打开开发者工具,查看所有的网络请求。首先,打开第一个网络请求,这个请求的URL就是当前的链接http://www.toutiao.com/search/?keyword=街拍,打开Preview选项卡查看Response Body。如果页面中的内容是根据第一个请求得到的结果渲染出来的,那么第一个请求的源代码中必然会包含页面结果中的文字。为了验证,我们可以尝试搜索一下搜索结果的标题,比如“路人”二字,如图6-17所示。 图6-17 搜索结果 我们发现,网页源代码中并没有包含这两个字,搜索匹配结果数目为0。因此,可以初步判断这些内容是由Ajax加载,然后用JavaScript渲染出来的。接下来,我们可以切换到XHR过滤选项卡

Question about Python网络爬虫 web crawler

北城以北 提交于 2019-12-10 05:07:35
Question about Python网络爬虫 web crawler 难: 1、cookie、JavaScript的关系?怎么产生的cookie?cookie包含哪些内容?JavaScript的功能在crawler代码中通过python的第三方库selenium,selenium用于执行JavaScript的脚本语言,那selenium是什么?运行脚本语言的脚本语言? 2、python库jQuery是基于JavaScript的第三方库,二、JavaScript是web客户端的脚本语言,难道jQuery是基于JavaScript语言编写的客户端的脚本语言的第三方库?python的第三方库和选择器的关系?(关系库是:find、findAll、find_element_by_id) 3、python第三方库requests库包含的类有哪些?==requests库的功能有哪些?requests库是实现这些功能独一无二的吗?如果不是,那requests库与其他库的优势和局限性?怎么将requests库根据自己的需求进行特性定制? 4、浏览器、web客户端、web服务器端的关系和组成?这三者之间的交互式怎么实现的?涉及Ajax技术、html格式文本(动态HTML和静态HTML的区别和关系是什么?)、使用了哪些数据结构来抽象对象,文件管理系统的算法逻辑是怎么样

网络爬虫入门:你的第一个爬虫项目(requests库)

大城市里の小女人 提交于 2019-12-09 12:37:19
0.采用requests库 虽然urllib库应用也很广泛,而且作为Python自带的库无需安装,但是大部分的现在python爬虫都应用requests库来处理复杂的http请求。requests库语法上简洁明了,使用上简单易懂,而且正逐步成为大多数网络爬取的标准。 1. requests库的安装 采用pip安装方式,在cmd界面输入: pip install requests 小编推荐一个学python的学习qun 491308659 验证码:南烛 无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享 2. 示例代码 我们将处理http请求的头部处理来简单进行反反爬虫处理,以及代理的参数设置,异常处理等。 import requests def download(url, num_retries=2, user_agent='wswp', proxies=None): '''下载一个指定的URL并返回网页内容 参数: url(str): URL 关键字参数: user_agent(str):用户代理(默认值:wswp) proxies(dict): 代理(字典): 键:‘http’'https' 值:字符串(‘http(s)://IP’) num_retries(int):如果有5xx错误就重试(默认:2)

Python爬虫:获取链家,搜房,大众点评的数据

荒凉一梦 提交于 2019-12-08 22:38:42
基于Python的Scrapy库开发的网络爬虫 参考了网上很多的内容,具体都找不到了,也就不在这里放了。 最终完成的代码链接请到github网站下载:https://github.com/Hardysong/web-crawler-spider- 网络爬虫,用于爬取大众点评,搜房,链家上的数据 if users want export data as csv format , input : scrapy crawl amazon -t csv -o **.csv --loglevel=INFO recommend is export the data into database (MySQL). 来源: CSDN 作者: 哈代的随想 链接: https://blog.csdn.net/Hardysong/article/details/70161284