2017-06-19 33 views
0

私はターゲットドメインがウェブサイトに存在するかどうかを調べる小さなウェブスクレーパーに取り組んでいます。正規表現に一致する正規表現(CTLDループ)

これは私の現在のコード

target = "google.com" 
pattern = r"(http|https):\/\/(www.|)"+re.escape(target) 
patter = re.compile(pattern, re.IGNORECASE) 

パターンが一致するものを見つけるために使用されている外部ページ上に存在なしCTLDドメインが存在しなくなるまで、この正規表現パターンが正常に動作しています。

テスト・ケース#1

<a href="http://www.google.com">Google.com</a> 
Match Found 

テストケース#2

<a href="http://www.google.com/bla-bla-article">Random.co</a> 
Match Found 

テストケース#3

これは起こるべきではありません。 .comと.com.auは同じものではないので、一致が見つかりません。定義されたドメインとURLのように起動し、あなたの場合、正規表現マッチeverithingで

<a href="http://www.google.com.au">Google.com.au</a> 
Match Found 
+0

'(WWW |。)' - > '(:WWW?。)' – ubombi

+0

'(HTTP | HTTPS):\/\ /' - > 'https?:\/\ /' – ubombi

+1

使用しているプログラミング言語は知っておくと良いでしょう。 –

答えて

1

  • ます。https://google.com/Q = somesearch
  • ます。https://www.google.com/someurl
  • https://www.google.com .AUは/ etc ...

だから、あなたはそのURLにドメインの制限を定義する必要があります。
[プロトコル] [住所] [ポート] [パス] [クエリ] [ハッシュ]
パスが:

https?:\/\/(:?www\.)? + re.escape(ターゲット)と/、ポート始まる+ /

以下のような

あるいは何か:
https?:\/\/(:?www\.)? + re.escape(ターゲット)+ (?:\:\d+)/
もしあなたたい試合https://google.com:1488/somehiddenservice.json

Regexp info - あなたが正規表現を知るために必要なすべて

+0

私はそれが欲しいと正確に動作します。 –

+0

ちょうどバグに気づいた。スラッシュを追加すると、正規表現はスタンドアロンのドメインURLと一致しなくなります。 https://www.google.com/(一致) https://www.google.com(一致しません) 最後に '(\ /?[^ \。])'を追加しようとしましたしかし何らかの理由でPythonでうまく動作していないようです。 –

+0

うん、問題がある...使用する前に、正規表現を理解する必要があります。 正規表現の情報から少数のページを読んでください。私は約束します、あなたは簡単にこの正規表現を修正します – ubombi

関連する問題