2016-07-17 5 views
2

Я создал простой скрипт для извлечения исходного кода страницы, но я бы хотел «изолировать» часть ips, чтобы сохранить файл proxy.txt. Какие-либо предложения?Как выделить часть страницы HTML в Python 3

import urllib.request 

sourcecode = urllib.request.urlopen("https://www.inforge.net/xi/threads/dichvusocks-us-15h10-pm-update-24-24-good-socks.455588/") 
sourcecode = str(sourcecode.read()) 
out_file = open("proxy.txt","w") 
out_file.write(sourcecode) 
out_file.close() 

ответ

1

Я добавил пару строк к вашему коду, единственная проблема заключается в том, что версия пользовательского интерфейса (проверьте источник страницы) добавляется как IP-адрес.

import urllib.request 
import re 

sourcecode = urllib.request.urlopen("https://www.inforge.net/xi/threads/dichvusocks-us-15h10-pm-update-24-24-good-socks.455588/") 
sourcecode = str(sourcecode.read()) 
out_file = open("proxy.txt","w") 
out_file.write(sourcecode) 
out_file.close() 

with open('proxy.txt') as fp: 
    for line in fp: 
     ip = re.findall('(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})', line) 

for addr in ip: 
    print(addr) 

UPDATE: Это то, что вы ищете, BeatifulSoup может извлечь только данные, необходимые нам со страницы с помощью классов CSS, однако он должен быть установлен с пип. Вам не нужно сохранять страницу в файл.

from bs4 import BeautifulSoup 
import urllib.request 
import re 

url = urllib.request.urlopen('https://www.inforge.net/xi/threads/dichvusocks-us-15h10-pm-update-24-24-good-socks.455588/').read() 
soup = BeautifulSoup(url, "html.parser") 

# Searching the CSS class name 
msg_content = soup.find_all("div", class_="messageContent") 

ips = re.findall('(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})', str(msg_content)) 

for addr in ips: 
    print(addr) 
+0

спасибо большое! это точка начала! но, возможно, можно сосредоточиться только на части html-страницы (в данном случае

), поэтому скрипт может печатать только ips? в любом случае еще раз спасибо – Sperly1987

+1

i'm stupid .. "ip" - это список, поэтому я могу удалить элементы внутри. – Sperly1987

1

Почему вы не используете повторно? Мне нужен исходный код, чтобы точно сказать, как это сделать.