用于抓取数据源和创建可读增量的python库

delta-scraper的Python项目详细描述


三角刮刀

在早期开发中

PyPITravis CIDocumentation StatusLicense

用于抓取数据源和创建可读增量的python库。

有关背景,请参见Scraping hurricane Irma

概念

这个库允许您定义scrapers,这些对象知道如何从源(通常是一个web api,但scrapers可以编写为对html或其他格式进行操作)检索信息,并将数据持久化为json。

当scraper获取新信息时,它能够将该数据与旧数据进行比较,并使用差异来创建一个人类可读的消息。

这些功能可以与git存储库相结合,创建一个提交日志,其中包含随机器可读diff againts生成的json而来的人类可读的提交消息。

请参阅disaster-scrapersdisaster-data以获取此模式的一些实际示例。

基本用法

您可以通过子类化DeltaScraper来定义新的scraper。下面是一个擦掉联邦应急管理局庇护所名单的例子。

class FemaShelters(DeltaScraper):
    url = "https://gis.fema.gov/geoserver/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=FEMA:FEMANSSOpenShelters&maxFeatures=250&outputFormat=json"
    owner = "simonw"
    repo = "disaster-data"
    filepath = "fema/shelters.json"

    record_key = "SHELTER_ID"
    noun = "shelter"

    def fetch_data(self):
        data = requests.get(self.url, timeout=10).json()
        return [feature["properties"] for feature in data["features"]]

    def display_record(self, record):
        display = []
        display.append(
            "  {SHELTER_NAME} in {CITY}, {STATE} ({SHELTER_STATUS})".format(**record)
        )
        display.append(
            "    https://www.google.com/maps/search/{LATITUDE},{LONGITUDE}".format(
                **record
            )
        )
        display.append("    population = {TOTAL_POPULATION}".format(**record))
        display.append("")
        return "\n".join(display)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java搜索按钮不适用于我   java制作一个应用程序来打开您自己的文件扩展名   XMemcached中的java异步集   java无法在Android上使用HTML5 canvas touch   java是否可以用PHP为Restlet创建客户端?   java在主题中添加图标。AppCompat。光   java Safari错误,无法打开浏览器   java gson解析json值中commaseparatedvalue字符串中的项   java如何使用Quarkus在卡夫卡的同一主题中设置多个使用者   java组织。json。JSONException:在{main}()的第6个字符处的main后面应该是“:”   windowbuilder如何将Java文件导出到GATE developer   java这与安卓 studio ide问题有关,在更新我们的ide之后   java Android将活动加载到类中<?>对象   java如何在springdatajpa中使用DISTINCT、GROUP BY和ORDER BY?   使用jlink的java可复制构建