一. 引言

之前文章所用的例子中的规则都是固定的,如何自定义规则再结合提取器提取我们想要的网页内容呢?对于程序员来说,理想的目标是掌握一个通用的爬虫框架,每增加一个新目标网站就要跟着改代码,这显然不是好工作模式。这就是本篇文章的主要内容了,本文使用一个案例说明怎样将新定义的采集规则融入到爬虫框架中。也就是用可视化的集搜客GooSeeker爬虫软件针对亚马逊图书商品页做一个采集规则,并结合规则提取器抓取网页内容。

二. 安装集搜客GooSeeker爬虫软件

1. 前期准备

进入集搜客官网产品页面,下载对应版本。我的电脑上已经安装了Firefox 38,所以这里只需下载爬虫。

2. 安装爬虫

打开Firefox –> 点击菜单工具 –> 附加组件 –> 点击右上角附加组件的工具 –> 选择从文件安装附加组件 -> 选中下载好的爬虫xpi文件 –> 立即安装

下一步

下一步

三. 开始制作抓取规则

1. 运行规则定义软件

点击浏览器菜单:工具-> MS谋数台 弹出MS谋数台窗口。

2. 做规则

在网址栏输入我们要采集的网站链接,然后回车。当页面加载完成后,在工作台页面依次操作:命名主题名 -> 创建规则 -> 新建整理箱 -> 在浏览器菜单选择抓取内容,命名后保存。

四. 申请规则提取器API KEY

打开集搜客Gooseeke官网,注册登陆后进入会员中心 -> API -> 申请API

五. 结合提取器API敲一个爬虫程序

1.引入Gooseeker规则提取器模块gooseeker.py

(下载地址: gooseeker/core at master · FullerHua/gooseeker · GitHub), 选择一个存放目录,这里为E:\demo\gooseeker.py

2. 与gooseeker.py同级创建一个.py后缀文件

如这里为E:\Demo\third.py,再以记事本打开,敲入代码:

注释:代码中的31d24931e043e2d5364d03b8ff9cc77e 就是API KEY,用你申请的代替;amazon_book_pc 是规则的主题名,也用你的主题名代替

# -*- coding: utf-8 -*-

# 使用GsExtractor类的示例程序

# 以webdriver驱动Firefox采集亚马逊商品列表

# xslt保存在xslt_bbs.xml中

# 采集结果保存在third文件夹中

import os

import time

from lxml import etree

from selenium import webdriver

from gooseeker import GsExtractor

# 引用提取器

bbsExtra = GsExtractor()

bbsExtra.setXsltFromAPI("31d24931e043e2d5364d03b8ff9cc77e", "amazon_book_pc") # 设置xslt抓取规则

# 创建存储结果的目录

current_path = os.getcwd()

res_path = current_path + "/third-result"

if os.path.exists(res_path):

pass

else:

os.mkdir(res_path)

# 驱动火狐

driver = webdriver.Firefox()

url = "https://www.amazon.cn/s/ref=sr_pg_1?rh=n%3A658390051%2Cn%3A!658391051%2Cn%3A658414051%2Cn%3A658810051&page=1&ie=UTF8&qid=1476258544"

driver.get(url)

time.sleep(2)

# 获取总页码

total_page = driver.find_element_by_xpath("//*[@class='pagnDisabled']").text

total_page = int(total_page) + 1

# 用简单循环加载下一页链接(也可以定位到下一页按钮,循环点击)

for page in range(1,total_page):

# 获取网页内容

content = driver.page_source.encode('utf-8')

# 获取docment

doc = etree.HTML(content)

# 调用extract方法提取所需内容

result = bbsExtra.extract(doc)

# 保存结果

file_path = res_path + "/page-" + str(page) + ".xml"

open(file_path,"wb").write(result)

print('第' + str(page) + '页采集完毕,文件:' + file_path)

# 加载下一页

if page < total_page - 1:

url = "https://www.amazon.cn/s/ref=sr_pg_" + str(page + 1) + "?rh=n%3A658390051%2Cn%3A!658391051%2Cn%3A658414051%2Cn%3A658810051&page=" + str(page + 1) + "&ie=UTF8&qid=1476258544"

driver.get(url)

time.sleep(2)

print("~~~采集完成~~~")

driver.quit()

3. 执行third.py

打开命令提示窗口,进入third.py文件所在目录,输入命令 :python third.py 回车

4. 查看结果文件

进入third.py文件所在目录,找到名称为result-2的文件夹然后打开

六. 总结

制作规则时,由于定位选择的是偏好id,而采集网址的第二页对应页面元素的id属性有变化,所以第二页内容提取出现了问题,然后对照了一下网页元素发现class是一样的,果断将定位改为了偏好class,这下提取就正常了。下一篇《Scrapy框架的安装和使用》简单介绍Scrapy的使用方法。

End

作者:华天清

来源:知乎

本文均已和作者授权,如转载请与作者联系。

python自动生成采集规则_快速制作规则及获取规则提取器AP相关推荐

  1. python自动生成采集规则_快速制作规则及获取规则提取器API

    1. 引言 前面文章的测试案例都用到了集搜客Gooseeker提供的规则提取器,在网页抓取工作中,调试正则表达式或者XPath都是特别繁琐的,耗时耗力,工作枯燥,如果有一个工具可以快速生成规则,而且可 ...

  2. python自动生成ppt报告_把时间还给洞察,且看PPT调研报告自动生成攻略

    文/JSong @2017.02.28 在数据分析里面有一句话是说,80%的时间要用于数据清洗和整理,而我觉得理想的状态应该是把更多的把时间花在数据背后的洞察当中.去年11月在简书占了个坑,说要自己写 ...

  3. python自动生成分析报告_利用PYTHON全自动生成分析报告

    日常工作当中,特别是金融行业当中,有不少人的工作是提取数据,分析数据,得到可视化图表,并加入自已的研究分析结论,最终生成分析报告,并且有不少报告是定期生成,存在不少重复手工劳动.本文通过一个简单实例, ...

  4. python自动生成采集规则_【仅供学习参考】Python多线程池采集小说,超简单!

    [Python] 纯文本查看 复制代码#采集小说lingdiankanshu.co import requests from lxml import etree from multiprocessin ...

  5. python自动生成word报告_利用Python实现报告自动生成

    前几天,在网上看到一篇介绍利用Python组件实现MS word内容生成的文章.可能是很久没接触编码,感觉在技术领域变得有点孤陋寡闻了,看见一些实用的功能都觉的屌屌的.以前经常通过代码写Excel文件 ...

  6. python自动生成鸡汤文_用20行Python代码生成鸡汤,打造AI咪蒙指日可待。

    作者:Ramtin Alami "Don't think of the overwhelming majority of the impossible." "不要去想不可 ...

  7. python自动生成鸡汤文_马尔可夫链文本生成的简单应用:不足20行的Python代码生成鸡汤文...

    提到自然语言的生成时,人们通常认为要会使用高级数学来思考先进的AI系统,然而,并不一定要这样.在这篇文章中,我将使用马尔可夫链和一个小的语录数据集来产生新的语录. 马尔可夫链 马尔可夫链是一个只根据先 ...

  8. python自动生成测试报告步骤_生成HTMLTestRunner测试报告的操作步骤——Python+selenium自动化...

    HTMLTestRunner是Python标准库的unittest模块的一个扩展,具体操作如下 1.安装 环境:Window8 步骤:1)http://tungwaiyip.info/software ...

  9. python自动生成坐标脚本_用一个简单的python脚本从经纬度坐标获得高程

    我从这个question得到了一个python脚本,它将从USGS高程点查询服务中提取.但是,它总是超时,并在一段看似随机的时间之后,在查询完成之前将我踢出.我需要另一种方法来获取给定纬度坐标的高程数 ...

最新文章

  1. 73岁Hinton老爷子构思下一代神经网络:属于无监督对比学习
  2. 设置域名_如何设置二级域名解析?有什么设置方法?
  3. 工作三年左右的Java程序员跟大家谈谈从业心得
  4. 说明一项最有成就感的php项目,2020 Github 上 10 个最受欢迎的 PHP 项目
  5. android activity解耦,Android与设计模式:用单一职责原则为Activity解耦
  6. poj 2528_2
  7. Spring系列(六) Spring Web MVC 应用构建分析
  8. 注册docker hub账号
  9. 女生可以学计算机应用吗,我是女生 学计算机应用技术还是软体技术
  10. Emacs lisp 列表与函数的区别
  11. Windows下secureCRT、putty使用秘钥登录Linux
  12. 操作系统第二章课后答案
  13. win10专业版激活后变成教育版的解决方法(亲测有效)
  14. NLP-文本处理:英文文本挖掘预处理流程总结
  15. 集合的特性(成员操作符、for循环遍历)
  16. oracle职工工资数据表四表联动,oracle 学习之基础篇(四):多表查询
  17. 实体门店一定要做私域运营吗?哪些行业适合做私域流量运营?
  18. CUDA中的线程层次
  19. 欧氏空间位姿与变换矩阵的转换
  20. python 前端框架比较_浅谈五大Python Web框架

热门文章

  1. ECharts在线编辑 中国地图数据可视化 展示
  2. python万年历函数输入某一年某一月_Python自定义函数计算给定日期是该年第几天的方法示例...
  3. VC++下Duilib有关RichEdit添加背景图片和图片字体的使用
  4. 锵锵三人行:AWS,下个路口见
  5. 基于Python的模拟人脑神经元进行学习
  6. 抖音小店最新招商入驻标准及资质要求是什么
  7. 无插件纯Web HTML5 3D机房 进阶篇(新增设备、线缆、巡查等功能)
  8. c语言.jpg图片转成数组_基于 C 语言开发的 GUI 框架
  9. 中轴型SpA的两种诊断分支具有可比性
  10. python数据分析董付国ppt_Python数据分析、挖掘与可视化(慕课版) 董付国 著 / 人民邮电出版社...