2013-07-29 6 views
0

나는 프로그램을 작성 중이므로 컴퓨터 에서처럼 한 페이지에서 다른 페이지로 이동해야합니다.urllib2를 사용하여 한 페이지에서 다른 페이지로 이동

urllib에서 나는 페이지에 가서 해당 페이지 소스에서 URL을 얻습니다. 그 URL을 가져 가면 그 사이트로갑니다. 그러나 urllib이 잘못된 페이지에서 왔다고 말하는 사이트에서 오류가 발생합니다. 한 페이지에서 시작하여 다른 페이지로 이동하면 대신 새 페이지가 열립니다. . 여기 몇 가지 예제 코드입니다 :

tree = self.opener.open('http://www.example.com').read() 
#Beautiful soup parsing to get the new _url 
new_page = self.opener.open('http://www.example/new_url.com').read() 
print new_page #Output is error page 

어떻게 그것이 내가에 있던 이전 페이지에서 제공된 사이트 생각하도록 쓸 수있다? 액세스하려는 사이트가 감성의 이러한 종류가있는 경우

는 "urllib2가"단지 그냥 매우 낮은 제공 가득 차거나를 사용하여 당신이 그것으로 얻을려고 많은 어려움에있을 것입니다, 당신

+0

'urllib2'를 사용해야합니까?'requests'와'requests.session' 객체를 사용하는 것이 훨씬 쉽다는 생각이들 것입니다. 그렇지 않은 경우 리퍼러 헤더를 설정하여 해당 사이트가 행복하게 보이는지 확인할 수 있습니다. –

+0

요청을 사용하려고 생각했지만 헤더가 없어도 요청을 헤더에 추가 할 수 있습니까? – Serial

+0

'requests.get ('http://example.com/page ', headers = {'Referer ' : 'http://example.com'})' –

답변

0

감사 HTTP에 대한 평범한 액세스 - 프로그램에서 HTTP 헤더가 어디서 왔는지 말하고, 첫 번째 액세스에서 얻은 쿠키를 다시 재생해야합니다.

타사 Python 모듈을 사용하면 이러한 작업을 훨씬 쉽게 수행 할 수 있습니다. "requests"라이브러리 - 또는 "mechanize"이상을 고소하는 것이 좋습니다. 이 옵션을 사용하지 않아도 기본적으로 달성되는 것은 무엇인지 묻는 것이 아니라 선택한 프로젝트의 샘플을 문서화하면 훨씬 간단해질 수 있습니다.

+0

나는 이것을 수행하여했다. 'self.opener.addheaders = [('Referer', 'http : //www.example.com')]' – Serial