比如我在采集一个网站的时候,我想直接过滤或是替换掉一些没用的信息,比如QQ 手机 或是 www 开头的东西
数据量小一点还好我可以这样写:
if "http" or "www" or "QQ" or "qq" in content:
....
但是数据量大的话那不是很悲剧?
难道要一直or来连接?
最优雅的实现方式是什么?我想能用正则的话肯定是比较好的
因为需要匹配的信息太多了 ,比如QQ号码,网址,电话等这些都要进行查找和替换
伊谢尔伦2017-04-18 10:17:45
これはデータのサイズによって異なります。データのサイズが小さい場合は、データをクロールするたびにキーワードを Redis または何らかの構成ファイルに保存して、すべてのキーワードを置き換えることができます。
ただし、Web クローラーであるため、フィルタリングする必要があるキーワードや文字列が特に大きい場合は、正規表現を使用したとしても効率が非常に心配になります。
たとえば、フィルターで除外する必要があるキーワードが 100,000 個あり、これらの 100,000 個のキーワードを 50,000 個の正規表現に結合できるとします (多数の正規表現を手動で記述するか、正規表現を自動的に生成するかは言うまでもありません)。 crime down は非常に長いため、すべての正規表現と一致させるには少なくとも 50,000 回ループする必要があります。この単純な方法はおそらく利用できないと思います。
私の個人的な提案です。この記事を参照してください: http://blog.jobbole.com/99910/ この記事では、より効率的なクエリを実現するためにキーワードをセグメント化し、キーワード インデックスを構築する方法について説明しています。この記事では、stackoverflow のタグ エンジンを紹介します。
または、ElasticSearch のような強力なものを使用することをお勧めします。 。 。明らかに、ここで何十もの言葉を言う方法はありません。