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

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

02.09.2013, 17:21. Показов 190601. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru