0 / 0 / 0
Регистрация: 31.07.2013
Сообщений: 47

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

02.09.2013, 17:21. Показов 190344. Ответов 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
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
02.09.2013, 19:10
Все правильно, ты потерял имя библиотеки. Интерпретатор честно тебе отвечает, что в текущем модуле не определено имя requests.
0
Z3JheSBoYXQ=
 Аватар для fanatdebian
342 / 237 / 83
Регистрация: 08.07.2012
Сообщений: 577
02.09.2013, 23:04
Python
1
2
3
4
5
#!/usr/bin/env python
 
from urllib import request
 
r = requests.get(url,  proxies=proxyDict)
1
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
03.09.2013, 08:08
fanatdebian, это то же самое
0
Z3JheSBoYXQ=
 Аватар для fanatdebian
342 / 237 / 83
Регистрация: 08.07.2012
Сообщений: 577
03.09.2013, 08:31
Цитата Сообщение от accept Посмотреть сообщение
fanatdebian, это то же самое
Не совсем, в моем случае ты можешь использовать метод напрямую, без указания модуля, а в случае ТС надо прописывать имя модуля где прописан метод.
0
0 / 0 / 0
Регистрация: 31.07.2013
Сообщений: 47
03.09.2013, 08:33  [ТС]
Цитата Сообщение от fanatdebian Посмотреть сообщение
Python
1
2
3
4
5
#!/usr/bin/env python
 
from urllib import request
 
r = requests.get(url,  proxies=proxyDict)
Делал так же как вы написали, ошибка таже самая :

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
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
03.09.2013, 08:42
Цитата Сообщение от fanatdebian Посмотреть сообщение
Не совсем, в моем случае ты можешь использовать метод напрямую, без указания модуля, а в случае ТС надо прописывать имя модуля где прописан метод.
ты, как и автор, перепутал модуль requests (в котором есть get) с подмодулем urllib.request (в котором нет get)
а различия в последней букве
0
0 / 0 / 0
Регистрация: 31.07.2013
Сообщений: 47
03.09.2013, 08:54  [ТС]
Цитата Сообщение от accept Посмотреть сообщение
ты, как и автор, перепутал модуль requests (в котором есть get) с подмодулем urllib.request (в котором нет get)
а различия в последней букве
Спасибо!
Я импортировал библиотеку requests, но он выдол следующее :
код, после исправлений:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import lxml
from urllib import request
import requests
 
url = "http://google.ru/"
 
https_proxy = "proxy.corp.***:3128"
 
proxyDict = { 
             
              "https" : https_proxy
              
            }
 
r = requests.get(url,  proxies=proxyDict)
doc = lxml.html.document_fromstring(r.read())
А вот ошибка :
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Traceback (most recent call last):
  File "C:/Python32/xd", line 15, in <module>
    r = requests.get(url,  proxies=proxyDict)
  File "C:\Python32\lib\site-packages\requests\api.py", line 55, in get
    return request('get', url, **kwargs)
  File "C:\Python32\lib\site-packages\requests\api.py", line 44, in request
    return session.request(method=method, url=url, **kwargs)
  File "C:\Python32\lib\site-packages\requests\sessions.py", line 341, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\Python32\lib\site-packages\requests\sessions.py", line 444, in send
    r = adapter.send(request, **kwargs)
  File "C:\Python32\lib\site-packages\requests\adapters.py", line 327, in send
    raise ConnectionError(e)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='google.ru', port=80): Max retries exceeded with url: / (Caused by <class 'socket.error'>: [Errno 10051] Сделана попытка выполнить операцию на сокете при отключенной сети)
Я так понимаю, прокси не правильно оформлен?
0
Z3JheSBoYXQ=
 Аватар для fanatdebian
342 / 237 / 83
Регистрация: 08.07.2012
Сообщений: 577
03.09.2013, 08:58
Цитата Сообщение от accept Посмотреть сообщение
ты, как и автор, перепутал модуль requests (в котором есть get) с подмодулем urllib.request (в котором нет get)
а различия в последней букве
В этом согласен, просто вопрос задан двояко. По факту тут две ошибки, неправильное использование метода в теле, и собственно неверное использование самого модуля, в котором отсутствует указанный метод.
0
0 / 0 / 0
Регистрация: 31.07.2013
Сообщений: 47
03.09.2013, 10:24  [ТС]
С прокси вроде разобрался, но теперь выкидывает новую ошибку...
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import lxml.html
from urllib import request
import requests
 
url = "http://google.ru/"
 
http_proxy = "***@10.5.45.250:3128"
 
proxyDict = { 
             
              "http" : http_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 16, in <module>
    doc = lxml.html.document_fromstring(r.read())
AttributeError: 'Response' object has no attribute 'read'
0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
03.09.2013, 20:47
вторую строку удали, раз не пользуешься

Добавлено через 3 минуты
после 15-ой строки вставь
Python
1
print(r, dir(r))
и вывод сюда скопируй
1
 Аватар для Wolkodav
842 / 480 / 58
Регистрация: 18.09.2012
Сообщений: 1,688
03.09.2013, 22:12
Lamerok1, это как же вы можете прочитать ответ от севера? Вам возвращают объект Response, в нём содержиться ответ на ваш запрос.

Добавлено через 53 секунды
Lamerok1, тут почитайте.
0
0 / 0 / 0
Регистрация: 31.07.2013
Сообщений: 47
04.09.2013, 08:38  [ТС]
Цитата Сообщение от accept Посмотреть сообщение
вторую строку удали, раз не пользуешься

Добавлено через 3 минуты
после 15-ой строки вставь
Python
1
print(r, dir(r))
и вывод сюда скопируй
Сделал, теперь выдал вот такую ошибку:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Traceback (most recent call last):
  File "C:/Python32/ds", line 13, in <module>
    r = requests.get(url,  proxies=proxyDict)
  File "C:\Python32\lib\site-packages\requests\api.py", line 55, in get
    return request('get', url, **kwargs)
  File "C:\Python32\lib\site-packages\requests\api.py", line 44, in request
    return session.request(method=method, url=url, **kwargs)
  File "C:\Python32\lib\site-packages\requests\sessions.py", line 341, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\Python32\lib\site-packages\requests\sessions.py", line 444, in send
    r = adapter.send(request, **kwargs)
  File "C:\Python32\lib\site-packages\requests\adapters.py", line 327, in send
    raise ConnectionError(e)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='google.ru', port=80): Max retries exceeded with url: / (Caused by <class 'socket.error'>: [Errno 10051] Сделана попытка выполнить операцию на сокете при отключенной сети)
0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
04.09.2013, 14:19
Цитата Сообщение от Lamerok1 Посмотреть сообщение
Сделал, теперь выдал вот такую ошибку:
сделал не то, нет вывода dir()
1
0 / 0 / 0
Регистрация: 31.07.2013
Сообщений: 47
04.09.2013, 14:58  [ТС]
Спасибо большое, я наконец таки разобрался и с прокси и выгрузкой нужных тэгов, но теперь не понятно, как выгружать текст который расположен между этими тэгами
0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
04.09.2013, 14:59
текущий код приведи
0
0 / 0 / 0
Регистрация: 31.07.2013
Сообщений: 47
04.09.2013, 15:11  [ТС]
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import lxml.html
import urllib.request as req
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://Chetyrkin_AD:Alex_Chet23145@10.5.45.250:3128'})
auth = req.HTTPBasicAuthHandler()
opener = req.build_opener(proxy, auth, req.HTTPHandler)
req.install_opener(opener)
conn = req.urlopen(url)
print (conn.getcode())
soup = BeautifulSoup(conn.read(),from_encoding="utf-8")
test = soup.findAll(name = 'div' , attrs = {'class': 't_0'})
print (soup.original_encoding)
for t in soup.findAll(name = 'div' , attrs = {'class': 't_0'}):
    print (t)
а выдает следующее:
Python
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
200
utf-8
<div class="t_0"><b>+<span class="otstup"></span>21</b></div>
<div class="t_0"><b>+<span class="otstup"></span>17</b></div>
<div class="t_0"><b>+<span class="otstup"></span>15</b></div>
<div class="t_0"><b>+<span class="otstup"></span>17</b></div>
<div class="t_0"><b>+<span class="otstup"></span>21</b></div>
<div class="t_0"><b>+<span class="otstup"></span>16</b></div>
<div class="t_0"><b>+<span class="otstup"></span>14</b></div>
<div class="t_0"><b>+<span class="otstup"></span>17</b></div>
<div class="t_0"><b>+<span class="otstup"></span>22</b></div>
<div class="t_0"><b>+<span class="otstup"></span>15</b></div>
<div class="t_0"><b>+<span class="otstup"></span>13</b></div>
<div class="t_0"><b>+<span class="otstup"></span>18</b></div>
<div class="t_0"><b>+<span class="otstup"></span>21</b></div>
<div class="t_0"><b>+<span class="otstup"></span>16</b></div>
<div class="t_0"><b>+<span class="otstup"></span>15</b></div>
<div class="t_0"><b>+<span class="otstup"></span>18</b></div>
<div class="t_0"><b>+<span class="otstup"></span>23</b></div>
<div class="t_0"><b>+<span class="otstup"></span>17</b></div>
<div class="t_0"><b>+<span class="otstup"></span>13</b></div>
<div class="t_0"><b>+<span class="otstup"></span>17</b></div>
<div class="t_0"><b>+<span class="otstup"></span>24</b></div>
<div class="t_0"><b>+<span class="otstup"></span>17</b></div>
<div class="t_0"><b>+<span class="otstup"></span>13</b></div>
И хотелось бы что бы просто выдавал инфу в таком виде (например) : + 26
+21
и так далее.
0
 Аватар для Wolkodav
842 / 480 / 58
Регистрация: 18.09.2012
Сообщений: 1,688
04.09.2013, 17:56
Lamerok1, можно regexp попарсить)
1
0 / 0 / 0
Регистрация: 31.07.2013
Сообщений: 47
04.09.2013, 18:09  [ТС]
Блин, это что то из теории конечных автоматов? Тяжело было с этим в универе Если есть какая нибудь лит-ра по этому поводу буду очень благодарен
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
04.09.2013, 19:35
Lamerok1, если ты про вот это сообщение
Цитата Сообщение от Wolkodav Посмотреть сообщение
можно regexp попарсить)
то в нём говорится о модуле re, который нужен для работы с регулярными выражениями.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.09.2013, 19:35
Помогаю со студенческими работами здесь

При передаче 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 через прокси-сервер? Спасибо.


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru