анализ прокси-адреса с помощью Regex и python - PullRequest
1 голос
/ 21 июня 2020

Я пытаюсь получить адрес прокси-сервера, анализируя строку, содержащую IP-адрес и порт, скрытые большим количеством бесполезного текста. После множества неудачных попыток я начал изучать регулярное выражение.

def parseLine(line):
stock = []
listpat = ["\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b", "^(6553[0-5]|655[0-2]\d|65[0-4]\d\d|6[0-4]\d{3}|[1-5]\d{4}|[1-9]\d{0,3}|0)$ "] #ip, port

for elem in line:
    for pat in listpat:
        result = re.match(pat, elem)
        if result:
            stock.append(result)

with open('list.csv', 'a') as f:
    writer = csv.writer(f)
    for cell in stock:
        writer.writerows(cell)

два регулярных выражения являются соответственно паттернами для IP-адреса и для порта. Вот пример строки, которую я исследую:

<tr class="odd"><td><input id="row1" name="c1" onclick="choice()" type="checkbox" value="2057281.204.168.1069921863141"/></td><td>201.204.168.106<script type="text/javascript">document.write(":"+t+w+q+p+q)</script></td><td>high-anonymous</td><td><dfn title="01:09:16 AM GMT">Jun-19-2020</dfn></td><td>Costa Rica</td><td class="organization">San Antonio De Belen</td></tr>

единственная информация, которая меня интересует:

201.204.168.106

результат <script type="text/javascript">document.write(":"+t+w+q+p+q)</script>

в чем мои ошибки?

1 Ответ

0 голосов
/ 21 июня 2020

Вы ищете re.search() / re.findall(), а не re.match(). Последний привязывает выражение к началу строки, где не может найти никакого адреса. См. Следующий рабочий код:

import re

string = """
<tr class="odd"><td><input id="row1" name="c1" onclick="choice()" type="checkbox" value="2057281.204.168.1069921863141"/></td><td>201.204.168.106<script type="text/javascript">document.write(":"+t+w+q+p+q)</script></td><td>high-anonymous</td><td><dfn title="01:09:16 AM GMT">Jun-19-2020</dfn></td><td>Costa Rica</td><td class="organization">San Antonio De Belen</td></tr>
"""

rx = re.compile(r'(\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b)')

for possible_ip in rx.findall(string):
    print(possible_ip)

Что дает

201.204.168.106
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...