1

Beautifulsoupと正規表現を使用して、Webサイト(http://www.gatherproxy.com/)からIPアドレスを取得しようとしています。私は、IPアドレスは次の形式で存在することを見たウェブサイトを調べてbeautifulsoupと正規表現を使用してプロキシWebサイトからIPアドレスを取得する方法

、:

<tr class="proxy 149-56-34-94-225F" prx="149.56.34.94:8799" time="2017-03-29T15:42:33Z" type="Transparent" country="United States" port="8799" tmres="797"><td>2m 54s ago</td><td>149.56.34.94</td><td><a> 

<tr class="proxy 138-68-180-44-1FB6" prx="138.68.180.44:8118" time="2017-03-29T15:42:32Z" type="Elite" country="United States" port="8118" tmres="47"><td>3m 25s ago</td><td>138.68.180.44</td><td><a> 

だから私は、各タグ

soup.find_all(name='tr',attrs={'class':re.compile(r"proxy [0-9a-zA-Z]+-[0-9a-zA-Z]+-[0-9a-zA-Z]+-[0-9a-zA-Z]+-[0-9a-zA-Z]+")}) 

を取得するには、次のコードを使用していますが、出力はあります何もない。

答えて

0

リクエストの内容をそのWebサイトから印刷すると、行がJavascriptで生成されていることがわかります。ここで

はその例です:あなたはBeautifulSoupを必要としない、このステップのために

gp.insertPrx({"PROXY_CITY":"","PROXY_COUNTRY":"France","PROXY_IP":"149.202.191.205","PROXY_LAST_UPDATE":"3 1","PROXY_PORT":"C38","PROXY_REFS":null,"PROXY_STATE":"","PROXY_STATUS":"OK","PROXY_TIME":"524","PROXY_TYPE":"Transparent","PROXY_UID":null,"PROXY_UPTIMELD":"4152/393"});

、あなたは直接の内容はRegexすることができます。

import re 
import requests 
import json 

result = requests.get("http://www.gatherproxy.com").content 
matches = re.findall(r'gp\.insertPrx\(([^(]*)\);', str(result)) 

for match in matches: 
    _object = json.loads(match) 
    print (_object["PROXY_IP"]) 

出力する:このよう

104.156.226.80

52.32.220.134

138.68.184.128

...

+0

ありがとうございました!あなたのコードは完全に機能します。私の前のコードがうまくいかない理由を知っていますか? – shawn123

+0

あなたが見つけようとしていた 'tr'はJavaScriptで生成されますが、これはBeautifulSoupが解析できません。あなたはその種のもののために 'セレン 'を使うことができます。 – Zroq

関連する問題