python - 如何不刷新网页而监控网页变化?
PHPz
PHPz 2017-04-18 10:17:02
0
3
944

我在用python监控一个网页 这个网页不定时的会更新 我要寻找需要匹配的关键词比如‘ABC’ 大概的程序框架如下
基本方法就是 用 selenium 获取源码 然后beautifulsoup解析 然后再去结果里面match 每2秒循环一次

while true:
    html = browser.page_source
    soup = BeautifulSoup(html)
    abc=soup.find_all(text=re.compile("(ABC)"))    
    if not abc:
         .....
    else:
         .....   
    browser.refresh()
    time.sleep(2.0 - ((time.time() - starttime) % 2.0))

现在问题就是这个程序很依赖网速,browser.refresh() 刷新一次有可能就会用1秒钟
有没有什么办法 不需要刷新网页 就能知道网页有变化
或者有没有其他办法能让我这个程序 不被网速拖累

PHPz
PHPz

学习是最好的投资!

모든 응답(3)
黄舟

http Last-Modified


1) "Last-Modified"란 무엇인가요?
브라우저가 처음으로 URL을 요청하면 서버에서 반환 상태는 200이 되며 해당 콘텐츠는 요청한 리소스입니다. Last -Modified 속성은 이 파일이 서버에서 마지막으로 수정된 시간을 표시합니다. 형식은 다음과 유사합니다.
Last-Modified: Fri, 12 May 2006 18:53:33 GMT 클라이언트가 이를 요청할 때 두 번째 URL, HTTP
프로토콜 조항에 따라 브라우저는 If-Modified-Since 헤더를 서버에 보내 이 시간 이후에 파일이 수정되었는지 묻습니다.
 If - 수정 - 이후 : 2006년 5월 12일 금요일 18시 53분 : 33 GMT
 서버 측 리소스가 변경되지 않은 경우 HTTP 304(변경되지 않음
.) 상태 코드가 자동으로 빈 내용으로 반환되며, 따라서 전송할 데이터의 양이 절약됩니다. 서버 측 코드가 변경되거나 서버가 다시 시작되면 리소스가 재발행되고 반환은 첫 번째 요청과 유사합니다. 이렇게 하면 리소스가 클라이언트에 반복적으로 전송되지 않고 서버가 변경될 때 클라이언트가 최신 리소스를 얻을 수 있습니다.


헤더 'If-Modified-Since'

상태 코드:304 수정되지 않음

상태 코드 304는 페이지가 변경되지 않았음을 의미합니다

으아아아

어제(4일)로 시간이 변경되었습니다

서버가 상태 코드 200을 반환합니다

그리고 'Last-Modified': 'Sun, 05 Feb 2017 06:00:03 GMT'

도 있습니다

은 마지막 수정 시간을 나타냅니다.

으아아아
伊谢尔伦

어쨌든 데이터를 얻으려면 원본 사이트를 방문해야 합니다. 데이터를 캡처하지 않으면 변경 사항이 있는지 어떻게 알 수 있습니까?

大家讲道理

이런 종류의 업데이트는 ajax를 사용해서 업데이트할 수도 있습니다. 개인적으로는 웹사이트의 js 코드를 보면 요청 URL과 매개변수를 직접 찾아볼 수 있다고 생각합니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿