返回首页
最新
<i>wxpath</i> 是一个声明式的网络爬虫,网络爬取和数据提取直接通过 XPath 表达。<p>与其编写命令式的爬取循环,不如在一个表达式中描述要跟随的内容和要提取的内容:<p><pre><code> import wxpath
# 爬取、提取字段,构建维基百科知识图谱
path_expr = """
url('https://en.wikipedia.org/wiki/Expression_language')
///url(//main//a/@href[starts-with(., '/wiki/') and not(contains(., ':'))])
/map{
'title': (//span[contains(@class, "mw-page-title-main")]/text())[1] ! string(.),
'url': string(base-uri(.)),
'short_description': //div[contains(@class, 'shortdescription')]/text() ! string(.),
'forward_links': //div[@id="mw-content-text"]//a/@href ! string(.)
}
"""
for item in wxpath.wxpath_async_blocking_iter(path_expr, max_depth=1):
print(item)
</code></pre>
关键的新增功能是 `url(...)` 操作符,它获取并返回 HTML 以供进一步的 XPath 处理,以及 `///url(...)` 用于深度(或分页)遍历。其他部分都是标准的 XPath 3.1(映射/数组/函数)。<p>特点:<p>- 异步/并发爬取,结果流式输出<p>- 受 Scrapy 启发的自动限速和礼貌爬取<p>- 自定义处理的钩子系统<p>- 快速实验的命令行界面<p>另一个示例,通过 HN 评论(通过 "follow=" 参数)分页并提取数据:<p><pre><code> url('https://news.ycombinator.com',
follow=//a[text()='comments']/@href | //a[@class='morelink']/@href)
//tr[@class='athing']
/map {
'text': .//div[@class='comment']//text(),
'user': .//a[@class='hnuser']/@href,
'parent_post': .//span[@class='onstory']/a/@href
}
</code></pre>
限制:仅支持 HTTP(尚不支持 JS 渲染),不支持爬取持久性。如果有需求,这两项功能都在开发计划中。<p>GitHub: <a href="https://github.com/rodricios/wxpath" rel="nofollow">https://github.com/rodricios/wxpath</a><p>PyPI: pip install wxpath<p>欢迎对表达式语法和可能解锁的任何用例提供反馈。<p>谢谢!
大家好,
这是我过去一年一直在进行的一个项目。
除了将多个联邦来源的数据整合到一个统一的用户界面中,我还构建了一个基于2500多个规则的正则表达式解析器/伪状态机,能够将每一项立法行动分类为不同的状态和阶段。这使得我们能够生成过去50年中每一项法案的逐日时间线,以及一张图表,显示在任何时刻有多少(以及哪些)法案处于每个主要立法状态。总共解析了1,555,069个行动,分为41个阶段中的1,157个独特枚举。
我还将官方法案文本的XML重新解析为现代格式,并在CSS中重建了大型法案文本XLS样式系统,这大大提高了加载速度,并且据我所知,这是首次几乎完整地在CSS中重建该XLS样式。
希望你们觉得这个项目有趣 :)
嗨,HN,我制作了StarRupture计算器,这是一个免费的网页工具,专为游戏《StarRupture》设计。
《StarRupture》是一款科幻生存和工厂建设游戏。随着工厂的扩展,计算生产链、建筑数量和电力使用变得越来越困难。我创建这个工具是为了简化规划过程。
使用StarRupture计算器,您可以:
• 计算生产链和所需建筑
• 查看可视化的生产流程
• 比较不同的配方
• 检查电力消耗
• 保存和导出您的计划
所有数据均直接来自游戏文件,因此数字准确无误。该工具完全在浏览器中运行,免费且无广告。这是一个由粉丝制作的非官方项目。
网站:
<a href="https://starrupturecalculator.com/" rel="nofollow">https://starrupturecalculator.com/</a>
欢迎反馈。谢谢!
嗨,HN,
我开发了 byethrow (@praha/byethrow),这是一个用于 TypeScript/JavaScript 的 Result 类型库。
亮点:
- 支持树摇(只打包你使用的部分)
- 采用普通对象的 Result(不使用类)
- 同样的 API 适用于同步 Result<T,E> 和异步 Promise<Result<T,E>>
- 支持 pipe 和 then/through
- 类型安全的验证助手
文档: [https://praha-inc.github.io/byethrow](https://praha-inc.github.io/byethrow)
代码库: [https://github.com/praha-inc/byethrow](https://github.com/praha-inc/byethrow)
希望能听到使用过 Result/Either 的朋友们的想法:有什么缺失的,哪些地方让你觉得烦恼,你会想要改变什么?
嗨,HN,我们构建了这个。
NBA Edge Index使用来自Polymarket(真实货币预测市场)的赛前胜率。在每场比赛结束后,我们将结果与赛前赔率进行比较。超出预期的表现会提升球队的评分,而表现不佳则会降低评分。每支球队的初始评分为2000,评分在整个赛季中逐场累积。比赛结束后,更新会自动进行。
我们发现的一些有趣的数据点:
Polymarket的赔率在平均水平上相当准确:胜率在80%以上的球队赢得比赛的概率为82%(119场比赛),而胜率在60%到69%的球队赢得比赛的概率为63%。
表现最超出预期的球队:菲尼克斯太阳队,超出预期14.7%(市场给他们的平均赔率为45.8%;他们的胜率为60.5%)。
市场上被高估最多的球队:克利夫兰骑士队——胜率为55.8%,但市场给他们的隐含赔率为67.4%。他们作为重磅热门输掉了12场比赛。
最大冷门:犹他爵士队在1月13日以18.5%的市场赔率击败克利夫兰;我们的优势模型给犹他70.9%的胜率。
稳定性:在每支球队大约打了40场比赛后,排名开始显著分化,早期的噪音会平滑掉。
我们正在开发更多类似的指数。核心理念是:预测市场数据分散在数百个合约中,这些合约会到期并消失。我们将其转化为持久的、可追踪的指数。
我们使用的两种模式:
综合模式——将相关市场融合为一个数字。我们的全球冲突风险指数将大约15个Polymarket合约(乌克兰、台湾、伊朗)合并为一个数字。
滚动模式——自动替换到期合约。例如,我们的天气指数通过每天滚动更新来跟踪6个城市的温度偏差。
期待听到反馈或其他指数的建议。
实时NBA Edge指数在这里: [https://attena.xyz/nba](https://attena.xyz/nba)