网页内容抓取工具(Python即时网络爬虫GitHub源7.文档修改历史(组图))
优采云 发布时间: 2021-09-22 10:03网页内容抓取工具(Python即时网络爬虫GitHub源7.文档修改历史(组图))
1.项目背景
在Python Instant网络爬行动物项目中,我们讨论一个数字:程序员浪费在内容提取规则的调试中太多了(见图),所以我们推出了这个项目,并将程序员从繁琐的监管规则解放并放置进入高端数据处理工作。
这个项目是推出的,它很大程度上,因为开源,你可以在现成的源代码上进一步开发它。但是,Python3和Python2是不同的,“Python Instant网络爬行动物项目:内容提取器定义”文章的源代码不能用于Python 2. 7,这将发布一个Python 2. 7内容提取器。
2.解解
为了解决这个问题,我们隔离影响*敏*感*词*性和工作效率的提取器,描述了以下数据处理流程图:
图中的“可插拔提取器”必须非常模块化,然后键接口是:
3.提取器代码
插件提取器是即时网络爬行动物项目的核心组件,定义为类:GSExtractor
Python 2. 7及其描述文档的源代码文件请下载
从github
使用方式如下:
以下是此GSExtractor类的源代码(对于python 2.7)
#!/usr/bin/python
# -*- coding: utf-8 -*-
# 模块名: gooseeker_py2
# 类名: GsExtractor
# Version: 2.0
# 适配Python版本: 2.7
# 说明: html内容提取器
# 功能: 使用xslt作为模板,快速提取HTML DOM中的内容。
# released by 集搜客(http://www.gooseeker.com) on May 18, 2016
# github: https://github.com/FullerHua/jisou/core/gooseeker_py2.py
from urllib2 import urlopen
from urllib import quote
from lxml import etree
import time
class GsExtractor(object):
def _init_(self):
self.xslt = ""
# 从文件读取xslt
def setXsltFromFile(self , xsltFilePath):
file = open(xsltFilePath , 'r')
try:
self.xslt = file.read()
finally:
file.close()
# 从字符串获得xslt
def setXsltFromMem(self , xsltStr):
self.xslt = xsltStr
# 通过GooSeeker API接口获得xslt
def setXsltFromAPI(self , APIKey , theme, middle=None, bname=None):
apiurl = "http://www.gooseeker.com/api/getextractor?key="+ APIKey +"&theme="+quote(theme)
if (middle):
apiurl = apiurl + "&middle="+quote(middle)
if (bname):
apiurl = apiurl + "&bname="+quote(bname)
apiconn = urlopen(apiurl)
self.xslt = apiconn.read()
# 返回当前xslt
def getXslt(self):
return self.xslt
# 提取方法,入参是一个HTML DOM对象,返回是提取结果
def extract(self , html):
xslt_root = etree.XML(self.xslt)
transform = etree.XSLT(xslt_root)
result_tree = transform(html)
return result_tree
4.用法示示
以下是一个示例程序,演示如何使用GSExtractor类提取Douban讨论组主题。此示例具有以下特征:
以下是源代码,您可以下载
从github
# _*_coding:utf8_*_
# douban_py2.py
# 爬取豆瓣小组讨论话题
# Python版本: 2.7
from lxml import etree
from gooseeker_py2 import GsExtractor
from selenium import webdriver
import time
class PhantomSpider:
def getContent(self, url):
browser = webdriver.PhantomJS(executable_path='C:\\phantomjs-2.1.1-windows\\bin\\phantomjs.exe')
browser.get(url)
time.sleep(3)
html = browser.execute_script("return document.documentElement.outerHTML")
output = etree.HTML(html)
return output
def saveContent(self, filepath, content):
file_obj = open(filepath, 'w')
file_obj.write(content)
file_obj.close()
doubanExtra = GsExtractor()
# 下面这句调用gooseeker的api来设置xslt抓取规则
# 第一个参数是app key,请到GooSeeker会员中心申请
# 第二个参数是规则名,是通过GooSeeker的图形化工具: 谋数台MS 来生成的
doubanExtra.setXsltFromAPI("ffd5273e213036d812ea298922e2627b" , "豆瓣小组讨论话题")
url = "https://www.douban.com/group/haixiuzu/discussion?start="
totalpages = 5
doubanSpider = PhantomSpider()
print("爬取开始")
for pagenumber in range(1 , totalpages):
currenturl = url + str((pagenumber-1)*25)
print("正在爬取", currenturl)
content = doubanSpider.getContent(currenturl)
outputxml = doubanExtra.extract(content)
outputfile = "result" + str(pagenumber) +".xml"
doubanSpider.saveContent(outputfile , str(outputxml))
print("爬取结束")
结果如下图所示:
5.下一个读
本文已经解释了提取器的价值和用法,但它没有说如何生成它,只有快速生成的提取器可以达到节省开发人员时间的目的,这个问题将在其他文章讲讲中,请参阅“1分钟快速生成Web Content Extract的XSLT模板”
6.集搜客geker开源代码下载源
1. gooseeker开源python网络爬网github源
7.文修修历历史
2016-08-05:v 1. 0,python 2. 7内容提取第一个版本