Как загрузить определенный URL, пока не получите желаемый результат? - PullRequest
0 голосов
/ 04 января 2012

Как я могу загрузить определенный URL или его конкретное содержимое, пока не получу желаемый результат?

Например, мне нужна только вторая строка с веб-сайта, и с помощью urllib.urlopen мне нужно загрузить весь сайт, чтобы найти то, что я хочу, который находится во второй строке.

спасибо

редактирование: Дело не в том, что я не могу читать строки, потому что мне нужно загрузить несколько страниц, и остановка, когда я получу результат, сделает процесс намного быстрее.

вот код, который я использую для этой работы:

c = 'http://www.URL.com'
b = urllib.urlopen(c)
for line in b:
    if ('var codItem' in line):
        d = line.find('= "') + 3
        e = line.find('";', d)
        Cod = line[d:e]

Ответы [ 4 ]

1 голос
/ 04 января 2012

Снос всей веб-страницы является нормой; однако некоторые веб-серверы поддерживают запросы диапазонов, чтобы вы могли использовать определенный диапазон байтов, пока не найдете то, что ищете.

Смотрите этот связанный вопрос SO: как я могу запросить html-страницу в «HTTP-запросе» и запросить в ней только некоторое регулярное выражение или определенный html-тег?

Этот HTTP-заголовок Accept-Ranges описан в разделе 14.5

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

0 голосов
/ 04 января 2012

Используйте оператор break :

 c = 'http://www.URL.com'
 b = urllib.urlopen(c)
 for line in b:
     if ('var codItem' in line):
         d = line.find('= "') + 3
         e = line.find('";', d)
         Cod = line[d:e]
         break
0 голосов
/ 04 января 2012

чтение документации urllib . Вы можете указать размер для f.read (). Это позволяет извлекать определенное количество данных из потока и не связываться с другими битами данных. Когда вы открываете поток TCP, данные по-прежнему будут передаваться по соединению, но при чтении только части данных вам придется иметь дело только с байтами read

0 голосов
/ 04 января 2012

Строго невозможно с HTTP. Вы можете выдавать Range заголовки для выборки только определенного фрагмента байтов со страницы, но тогда вам нужно будет знать, каково смещение в байтах желаемого контента. Лучше всего просто извлечь всю страницу и извлечь то, что вы хотите, с помощью операций DOM.

...