Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.92/999: Рейтинг темы: голосов - 999, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 31.07.2013
Сообщений: 47

Как скачать страницу через прокси-сервер?

02.09.2013, 17:21. Показов 190357. Ответов 46
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Вернулся к простенькой задачке по парсингу сайтов. Но столкнулся с следующей бедой, на работе подключение к интернету осуществляется с помощью прокси сервера, в одной из тем мне написали решение данной проблемы, но я не уверен что понял. Вот и прошу собственно помощи. Вот сам код.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import lxml
import urllib.request
url = "http://google.ru/"
 
https_proxy = ":3128"
 
proxyDict = { 
             
              "https" : https_proxy
              
            }
 
r = requests.get(url,  proxies=proxyDict)
doc = lxml.html.document_fromstring(r.read())
И собственно ошибка.

Python
1
2
3
4
Traceback (most recent call last):
  File "C:/Python32/xd", line 13, in <module>
    r = requests.get(url,  proxies=proxyDict)
NameError: name 'requests' is not defined
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.09.2013, 17:21
Ответы с готовыми решениями:

Как скачать файл через прокси
Как собственно скачать файл через прокси HTTP,SOCKS4 или SOCKS5

Как заставить nginx ходить на урл через другой через прокси сервер?
Ситуация следующая. Сервер_1 - nginx, его надо настроить Сервер_2 - прокси сервер, прокинут доступ только от Сервера_1, позволяет...

Прокси-сервер на nginx периодически редиректит на домен, который открываю через прокси
Добрый день! Есть обычный сайт (пусть будет domain.ru) , а есть прокси-сервер на vds который доступен в адресной строке по домену...

46
0 / 0 / 0
Регистрация: 31.07.2013
Сообщений: 47
05.09.2013, 19:08  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от accept Посмотреть сообщение
Python
1
for t in soup.findAll(name = 'td' , attrs = {'class': r'[dn]2? underlineRow'}):
Ничего не выдает..

Добавлено через 31 секунду
Цитата Сообщение от accept Посмотреть сообщение
это пока не нужно, регулярные выражения можно передавать в словарь
А все так что это? Интересно очень.
0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
05.09.2013, 19:11
Цитата Сообщение от Lamerok1 Посмотреть сообщение
Ничего не выдает..
там исправлено

Цитата Сообщение от Lamerok1 Посмотреть сообщение
А все так что это?
ну, это накрайняк, можно сделать функцию, которая принимает тег и анализирует его содержимое, и передать её в метод .findAll()
0
0 / 0 / 0
Регистрация: 31.07.2013
Сообщений: 47
05.09.2013, 19:15  [ТС]
Цитата Сообщение от accept Посмотреть сообщение
Python
1
for t in soup.findAll(name = 'td' , attrs = {'class': re.compile(r'[dn]2? underlineRow')}):
Все равно ничего не выдает.
0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
05.09.2013, 19:21
код скопируй сюда
0
0 / 0 / 0
Регистрация: 31.07.2013
Сообщений: 47
05.09.2013, 19:33  [ТС]
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import lxml.html
import io
import urllib
import urllib.request as req
import requests
import re
from bs4 import BeautifulSoup
url = "http://rp5.ru/%D0%9F%D0%BE%D0%B3%D0%BE%D0%B4%D0%B0_%D0%B2_%D0%9A%D1%80%D0%B0%D1%81%D0%BD%D0%BE%D0%B4%D0%B0%D1%80%D0%B5,_%D0%9A%D1%80%D0%B0%D1%81%D0%BD%D0%BE%D0%B4%D0%B0%D1%80%D1%81%D0%BA%D0%B8%D0%B9_%D0%BA%D1%80%D0%B0%D0%B9"
 
proxy=req.ProxyHandler({'http':r'http://@10.5.45.250:3128'})
auth = req.HTTPBasicAuthHandler()
opener = req.build_opener(proxy, auth, req.HTTPHandler)
req.install_opener(opener)
conn = req.urlopen(url)
soup = BeautifulSoup(conn.read(),from_encoding="utf-8")
 
test = soup.findAll(name = 'td' , attrs = {'class': re.compile(r'[dn]2? underlineRow')})
for t in soup.findAll(name = 'td' , attrs = {'class': re.compile(r'[dn]2? underlineRow')}):
    print(t)
Вот так.
0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
05.09.2013, 21:02
прежняя версия
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/env python3
 
import urllib.request as req
import re
from bs4 import BeautifulSoup
 
url = "http://rp5.ru/%D0%9F%D0%BE%D0%B3%D0%BE%D0%B4%D0%B0_%D0%B2_%D0%9A%D1%80%D0%B0%D1%81%D0%BD%D0%BE%D0%B4%D0%B0%D1%80%D0%B5,_%D0%9A%D1%80%D0%B0%D1%81%D0%BD%D0%BE%D0%B4%D0%B0%D1%80%D1%81%D0%BA%D0%B8%D0%B9_%D0%BA%D1%80%D0%B0%D0%B9"
 
conn = req.urlopen(url)
soup = BeautifulSoup(conn.read(),from_encoding="utf-8")
 
def f(tag):
    return tag.name == 'td' and \
           {'class', 'colspan'} == set(tag.attrs) and \
           len(tag.attrs['class']) == 2 and \
           re.search(r'^[dn]2?$', tag.attrs['class'][0]) and \
           tag.attrs['class'][1] == 'underlineRow' and \
           tag.text.strip()
    
for t in soup.findAll(f):
    print(t)
    print(re.search(r'\d{2}:\d{2}', str(t)).group())


Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/env python3
 
import urllib.request as req
import re
from bs4 import BeautifulSoup
 
url = "http://rp5.ru/%D0%9F%D0%BE%D0%B3%D0%BE%D0%B4%D0%B0_%D0%B2_%D0%9A%D1%80%D0%B0%D1%81%D0%BD%D0%BE%D0%B4%D0%B0%D1%80%D0%B5,_%D0%9A%D1%80%D0%B0%D1%81%D0%BD%D0%BE%D0%B4%D0%B0%D1%80%D1%81%D0%BA%D0%B8%D0%B9_%D0%BA%D1%80%D0%B0%D0%B9"
 
conn = req.urlopen(url)
soup = BeautifulSoup(conn.read(),from_encoding="utf-8")
 
def f(tag):
    return tag.name == 'td' and \
           {'class', 'colspan'} == set(tag.attrs) and \
           len(tag.attrs['class']) == 2 and \
           re.search(r'^[dn]2?$', tag.attrs['class'][0]) and \
           tag.attrs['class'][1] == 'underlineRow' and \
           tag.text.strip()
    
for t in soup.findAll(f):
    print(t)
    print(t.text)
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
[guest@localhost py]$ ./bs.py 
<td class="d underlineRow" colspan="2">16:00</td>
16:00
<td class="n2 underlineRow" colspan="2">22:00</td>
22:00
<td class="n underlineRow" colspan="2">04:00</td>
04:00
<td class="d2 underlineRow" colspan="2">10:00</td>
10:00
<td class="d2 underlineRow" colspan="2">16:00</td>
16:00
<td class="n2 underlineRow" colspan="2">22:00</td>
22:00
<td class="n underlineRow" colspan="2">04:00</td>
04:00
<td class="d2 underlineRow" colspan="2">10:00</td>
10:00
<td class="d2 underlineRow" colspan="2">16:00</td>
16:00
<td class="n2 underlineRow" colspan="2">22:00</td>
22:00
<td class="n underlineRow" colspan="2">04:00</td>
04:00
<td class="d2 underlineRow" colspan="2">10:00</td>
10:00
<td class="d2 underlineRow" colspan="2">16:00</td>
16:00
<td class="n2 underlineRow" colspan="2">22:00</td>
22:00
<td class="n underlineRow" colspan="2">04:00</td>
04:00
<td class="d2 underlineRow" colspan="2">10:00</td>
10:00
<td class="d2 underlineRow" colspan="2">16:00</td>
16:00
<td class="n2 underlineRow" colspan="2">22:00</td>
22:00
<td class="n underlineRow" colspan="2">04:00</td>
04:00
<td class="d2 underlineRow" colspan="2">10:00</td>
10:00
<td class="d2 underlineRow" colspan="2">16:00</td>
16:00
<td class="n2 underlineRow" colspan="2">22:00</td>
22:00
<td class="n underlineRow" colspan="2">04:00</td>
04:00
[guest@localhost py]$
1
0 / 0 / 0
Регистрация: 31.07.2013
Сообщений: 47
06.09.2013, 08:50  [ТС]
Спасибо большое!
Теперь буду разбираться с def f(tag).
Вы мне очень помогли.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.09.2013, 08:50
Помогаю со студенческими работами здесь

При передаче post запроса через прокси сервер в ответ приходят ошибки с прокси сервера
При передаче post запроса через прокси сервер в ответ прилетают ошибки с прокси сервера: &lt;p&gt;&lt;b&gt;Invalid Request&lt;/b&gt;...

Как работать через прокси-сервер?
Есть программа (IRC-клиент). Какие команды нужно посылать прокси (HTTP) чтоб установить соединение с IRC сервером и передавать/получать...

Как скрыть свой ip, через прокси сервер?
Я новичок, подскажите плз как скрыть свой ip, через прокси сервер (только по проще объясните и подробнее). Заранее спасибо!

Как настроить прокси сервер через терминал?
через терминала /etc/apt/apt.conf следующую запись Acquire::http :: proxy &quot;логин:пароль@ip_адрес:порт/&quot;; Acquire::https...

Как отправить e-mail через прокси-сервер?
Как отправить e-mail через прокси-сервер? Спасибо.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
47
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru