2017-05-16 6 views
0

일부 웹 사이트를 비웃는 파이썬과 웹을 실험 해 봅니다. 내가 배울 수있는 걸 본다. 내가 에 헤더 속성을 사용하지 않는 한 Amazon.com이 나에게 Response 503을 줄 것을 알았다.파이썬 웹 스크래핑 : 503 특정 사이트에 대한 응답 (어떻게 되겠습니까?)

그러나 readcomiconline.to에 대해서는 작동하지 않습니다. 내가 시도한 내용이 무엇이든지간에 Response 503이 표시됩니다. 이것을 JavaScript preloader와 관련 있다고 가정합니다.

어떤 문제가 있습니까?

import requests 
urlAmazon = 'http://amazon.com' 
urlComics = 'http://readcomiconline.to' 
headerAgent = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'} 
client = requests.session() 

resultOne = client.get(urlAmazon) 
print(resultOne) #<Response [503]> 
resultOne = client.get(urlAmazon, headers=headerAgent) 
print(resultOne) #<Response [200]> 

resultTwo = client.get(urlComics) 
print(resultTwo) #<Response [503]> 
resultTwo = client.get(urlComics, headers=headerAgent) 
print(resultTwo) #<Response [503]> 

셀레늄을 사용해도 여전히 503 오류가 발생합니다. 자바 스크립트 주위에 어떤 방식 으로든 적절한 웹 긁기를 수행 할 수 있습니까? 셀레늄에 대한

import bs4, requests 
from selenium import webdriver 
from lxml import html 

headerAgent = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'} 

res = requests.get('http://readcomiconline.to/Comic/Saga/Issue-1 &readType=1',headers=headerAgent) 
res.raise_for_status() 

soup = bs4.BeautifulSoup(res.text, "lxml") 
comicElement = soup.find('table', {'class':'listing'}) 
+0

당신은 두 번째 사이트에 대해 옳았습니다. js를 사용하여'/ cdn-cgi/l/chk_jschl'에 확인을 보내고 쿠키를 얻습니다. 'selenium' 또는 js를 뒤집을 수 있습니다 (약 40 줄입니다) –

+0

@ t.m.adam javascript를 통해 정보를 찾아서/cdn-cgi/l/chk_jschl로 보내셨습니까? (Chrome DevTools 사용?). 나는 Selenium (웹 사이트에 로그인하고 페이지에서 특정 요소를 찾는 것)을 약간 엉망으로 만들기 시작했다. 이 접근법에 대해 더 자세히 살펴볼 것입니다. – Josh

+1

나는 스크립트가없는 파이어 폭스를 사용한다. –

답변

0

가장 좋은 점은 execute_script('script')를 사용하여 스크립트에 의해 실행 된 작업을 에뮬레이트 할 수 있습니다. JS가 내용을 렌더링하는 사이트의 경우 JS가 내용을 렌더링하는 방법을 이해하는 것이 가장 좋은 방법입니다. XHR을 추적하고 응답을 확인하여 필요한 콘텐츠를 반환하는지 확인합니다.