Соскоб с использованием Python - PullRequest
2 голосов
/ 07 августа 2011

Я пытаюсь очистить сайт http://www.nseindia.com, используя urllib2 и BeautifulSoup. К сожалению, я получаю 403 Запрещено, когда я пытаюсь получить доступ к странице через Python. Я думал, что это проблема агента пользователя, но изменение, которое не помогло. Тогда я подумал, что это может иметь какое-то отношение к куки, но, очевидно, загрузка страницы по ссылкам с отключенными куки работает нормально. Что может блокировать запросы через urllib?

1 Ответ

9 голосов
/ 07 августа 2011

http://www.nseindia.com/, кажется, требует заголовок Accept, по любой причине.Это должно работать:

import urllib2
r = urllib2.Request('http://www.nseindia.com/')
r.add_header('Accept', '*/*')
r.add_header('User-Agent', 'My scraping program <author@example.com>')
opener = urllib2.build_opener()
content = opener.open(r).read()

Отказ в запросах без заголовков Accept неверен; RFC 2616 четко указывает

Если поле заголовка Accept отсутствует, предполагается, что клиент принимает все типы мультимедиа.

...