捉解什么生肖?
这个问题问得真是时候,今天刚抓的,就分享出来给大家参考 首先解释我的方法(简单到不行) 用软件抓取所有符合规则的数据,在规则里设置关键字的数量以及关键字位置,以判断是否命中,如果是的话则保留这条数据,并且把其显示时间作为匹配时间,再把其显示正文复制到文本里备用 最后用正则提取出想要的数字,以文本文件格式保存 如果想要更智能一点的话可以加入一些算法,比如同义词库、句子划分,这样能大幅提升命中率 我用的是python写的程序,所以在Windows环境下测试通过,其他环境没试。程序里面有一些优化地方,如果各位大师有意愿的话可以用更简单的方法实现 下面给出代码和测试数据
import re import time from datetime import date, timedelta MAX_KEYWORDS=50 # 最大关键字数量,这里可以设置成你所希望的大小 key_pos=['[^.!?]+'] * MAX_KEYWORDS # 构造关键字,在这里我把需要采集的信息全部放在一个句子中,所以只需要一个正则表达式即可匹配到所有的信息 word_regexp='|'.join(key_pos) url_list=[] # 存放最终结果的文件 for i in range(10): # 循环十次,每个循环采集十个网址,因为不知道正确率所以没法判断是不是每循环一次采集的十个网址都不同 # 因为是随机访问网站,所以每条数据的匹配时间和显示正文可能会有所差异 match_time=datetime.now().strftime('%Y-%m-%d %H:%M:%S') # 记录匹配时间 match=re.search(word_regexp,data) if (match): # 如果有匹配到,并且长度符合要求,则可以获取到关键字的位置 words=match.group(2) # 切分句子并把结果放入列表,方便下一步操作 words_list=words.split() # 把每个单词转换成大写且去空格,便于与期望值比较 words_upper=[w.upper() for w in words_list] if len(words_upper)>MAX_KEYWORDS: # 如果关键词数目超过设定数,则只取前MAX_KEYWORDS个 keywords=[i for i in words_upper if i not in ('THE','TO','IN','OF','A','AN'}# 把关键词放入字典以便于查找 ...(省略部分代码) 以上只是能抓到关键词,如果想准确获取到时间就需要添加更多逻辑,毕竟网络信息采集并没有标准答案,而且题主也没有说明具体采样的网站,所以只能提供这么粗略的方法。