2013-05-20 1 views
0

urllib2를 사용하여 http://fiverr.com/logo_business/design-a-killer-high-quality-effective-and-custom-made-logo-for-your-company-business-website-or-personal-use의 HTML을 원합니다. 그러나 그것은 나에게 내 브라우저를 통해 얻을 HTML을 제공하지 않습니다 ...Urllib2가 다른 html 소스를 얻습니다.

내 코드 :

import urllib2 
request = urllib2.Request('http://fiverr.com/logo_business/design-a-killer-high-quality-effective-and-custom-made-logo-for-your-company-business-website-or-personal-use') 
opener = urllib2.build_opener() 
request.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20130406 Firefox/23.0') 
data = opener.open(request).read() 
print data 

이 사람이 나를 도울 수 있습니까? 내가 도대체 ​​뭘 잘못하고있는 겁니까?

내가 필요한 구체적인 것은 "일시 정지"텍스트입니다. 공연이 일시 중지되지 않은 즉시 판매자에게 연락하고 싶습니다. :)

+0

서버는 원하는대로 보낼 수 있으며 헤더를 기반으로 응답이 달라질 수 있습니다. 시행 착오를 기반으로 브라우저가 보내는 헤더가 무엇인지 알아 내야합니다. –

+0

또한 브라우저는 서버에서 보낸 JavaScript를 실행하여 브라우저에 표시된 내용을 변경할 수 있습니다. 여기에는 AJAX를 사용하여 서버에서로드 된 추가 정보가 포함됩니다. –

+0

즉, 이것은 'urllib2'자체의 문제가 아니며 * 아닙니다. –

답변

1

웹 사이트에서 데이터를 보내고 있습니다. urllib2 아웃 - 오브 - 박스를 디코딩 할 수 있지만 requests로는 잘 액세스 할 수 있습니다

url = 'http://fiverr.com/logo_business/design-a-killer-high-quality-effective-and-custom-made-logo-for-your-company-business-website-or-personal-use' 
print 'Gig Paused' in requests.get(url, headers={'User-Agent': ''}).text 
+0

그게 해결 됐어! 고마워요! – user2403431

0

이 문제는 브라우저에 의존 (겉으로 크롬 '이고하지 urllib2은 잘못이다)

이것은 아주 작은 답변 일 뿐이지 만 누군가가 도움이되기를 바랍니다.

나는 동일한 문제를 발견했다. brrequests을 사용해 보았습니다. 아무런 의미가 없습니다. 모두 urllib2과 같은 결과를 얻었습니다. Chrome에서 본 내용 (Mac OSX 10.10 - Yosemite)과 맞지 않아 잘못된 것으로 생각됩니다.

그러나 Firefox 및 Safari를 사용하여 추가 테스트를 수행했을 때 urllib2과 동일한 URL이 성공적으로 검색되었으며 이것이 올바른지 확인했습니다.

마티 피에 터스가 말한대로, 문제가 urllib2가 함께 할 수있는 아무것도하지 않는 것 그래서

,하지만 많은 적어도 내 경우, 크롬로 할 수 있습니다.

나의 제안은 파이어 폭스/사파리에서 원하는 링크를 찾은 다음 파이썬에서 일치하도록 코드를 구현하는 것입니다.

또는 정확히 무슨 일이 일어나기까지 헤더를 가지고 놀아야 할 것입니다. 다시 말하지만, 제 경우에는 Chrome 링크가 단순히 잘못되어 Chrome에서 보여주는 것과 일치하도록 헤더를 사용하지 않으려 고합니다.