teampopong / crawlers

Some quick 'n dirty web crawlers.
GNU Affero General Public License v3.0
53 stars 39 forks source link

Safe crawling? #35

Open hunkim opened 8 years ago

hunkim commented 8 years ago

제 생각에는 crawling과 parsing을 조금 reliable하게 refactoring 해보면 어떨까요?

  1. 지금 crawling과 parsing이 나누어져 있는데 법안 하나를 crawl하고 이를 parsing하면 어떨까요? 그러면 서버에 hit 하는 시간을 줄여주어 서버 부하를 적게할것 같습니다.
  2. get_html 에 try/catch를 걸어 500서버에러나 connection 에러나, 본문중 SQL Exception이 있으면 1초 쉬었다가 3번 정도 retry 해본다음 die.
  3. 위 2번에서 받아온 html을 parsing해보고 문제가 있으면 2번을 다시 수행하고 파싱. 이 과정도 3번정도 해보고 안되면 die 하면 어떨까요?

2 나 3에서 die가 되면 전체 업데이트가 안되겠지만, 전체 업데이트가 안되는 것이 일부 법안이 누락된 정보를 보여주는 것보다 좋지 않을까 생각됩니다. 2, 3번 에러가 지속된다면 뭔가 대책이 필요하겠죠? ^^

그냥 생각나서 적어 보았습니다. 감사합니다.

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/28770142-safe-crawling?utm_campaign=plugin&utm_content=tracker%2F248104&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F248104&utm_medium=issues&utm_source=github).
e9t commented 8 years ago

정말 좋은 의견입니다. 안 그래도 robustness를 위해 프로세스 단위가 아니라 의안 단위로 실행이 되는 것이 좋겠다고 생각합니다. 의안 크롤러를 새로 짜게 될 때 말씀하신 전략을 적용해보면 좋을 것 같습니다.