2012-06-15 1 views
3

System.net.Webclient 클래스를 사용하여 코드를 작성하여 웹 페이지에서 소스 코드를 가져온 다음 특정 정보를 얻기 위해 문자열 검색을 사용합니다. 자체적으로 잘 작동하지만, 문제는 소스 코드가 몇 초마다 변경된다는 것입니다. 따라서받은 데이터를 적절하게 변경하고 싶습니다. 불행히도 현재 코드를 완료하는 데 2.7 초가 걸리므로이 지연 시간을 피하고 싶습니다. 또한 가능한 경우 요청으로 웹 페이지 스팸을 방지하고 싶습니다. 여러 개의 요청을 보낼 필요가 없도록 열어 놓은 상태의 스트림에 대해 생각하고 있었지만이 문제를 어떻게 해결할 지 잘 모르고있었습니다 ...C#을 사용하여 소스 코드가 변경되는 웹 페이지의 데이터를 효율적으로 가져 오겠습니까?

그래서 요약 해 보겠습니다. 방식으로 System.Net 네임 스페이스를 사용하여 웹 사이트에서 정보를 업데이트 할 수있는 방법입니다. 요청이있는 경우 스팸을 피할 수 있습니까?

+2

몇 초마다 변화하는이 소스는 무엇입니까? –

+0

@ jay kreeler 나는 최선의 방법은 몇 분마다 HEAD 요청을 발행하고 마지막으로 수정 된 헤더를 확인하여 데이터가 변경되었는지 확인하는 것입니다. 그러나 나는 틀릴지도 모른다. – formatc

+2

@AustinSalonen : 분명히 그들은 매우 생산적인 프로그래머입니다. –

답변

1

HTTP 프로토콜이 실시간 데이터 새로 고침 요구 사항에 맞지 않는 것 같습니다. HTTP 요청을 정기적으로 폴링하는 것 이외에 서버에서 데이터가 변경되었는지 여부를 알 수 없으며이 새로운 데이터를 가져올 수 없습니다.

예를 들어 WebSocket 기술이 이러한 시나리오에 더 적합합니다. 물론 데이터 공급자는 클라이언트가이 라이브 피드에 가입 할 수 있도록 구현해야합니다.

HTTP 프로토콜을 통해이 기능을 구현하는 또 다른 방법이 있습니다. 그것은 iframe을 사용하여 long polling을 구현합니다. 여기에 example이 있습니다. 서버는 청크 분할 전송 인코딩을 사용하고 연속적인 데이터 스트림을 소켓에 보냅니다. 클라이언트는이 스트림을 구독하고 서버에서 발생하는 변경 사항을 통지받을 수 있습니다. 다시 한 번 말하지만, 클라이언트로서 클라이언트가이를 활용할 수 있도록 서버 측에서 구현해야하는 기술입니다.

서버가 제공하는 모든 것이 HTML 페이지를 통한 데이터 인 경우 IP 주소가 검은 색으로 나열되고 액세스가 거부 될 때까지 HTTP 요청으로이 서버를 해머하여 화면을 스크래핑하는 것이 좋습니다.

+0

고맙습니다. 이 대답 (조금 실망 스럽지만)은 내 질문에 완전히 대답합니다. 대단히 감사 드려요 ~ – Ari

관련 문제