찾다

 >  Q&A  >  본문

网页爬虫 - python如何爬取js生成的数据?

我想要爬取豆瓣音乐music.douban.com上的 新碟榜 和 近期热门歌单 ,看源代码好像都是js生成的,请教大家有什么办法可以爬到这些数据?谢谢!

高洛峰高洛峰2887일 전476

모든 응답(9)나는 대답할 것이다

  • 高洛峰

    高洛峰2017-04-17 17:58:25

    저는 Jsoup을 사용하여 크롤러를 작성하는데 일반적으로 콘텐츠를 반환하지 않는 HTML을 접하게 됩니다. 그러나 브라우저에는 일부 콘텐츠가 표시됩니다. 그들은 모두 페이지의 http 요청 로그를 분석합니다. 페이지의 JS 코드를 분석하여 해결하세요.

    1. 일부 페이지 요소가 숨겨져 있음->선택기를 변경하여 문제 해결
    2. 일부 데이터가 js/json 개체에 저장됨->해당 문자열을 가로채서 솔루션 분석
    3. API 인터페이스를 통해 Call->Fake 요청을 통해 데이터 획득

    궁극적인 방법도 있습니다
    4. phantomjs나 casperjs와 같은 헤드리스 브라우저를 사용하세요

    회신하다
    0
  • 黄舟

    黄舟2017-04-17 17:58:25

    일부 답변에서는 인터페이스를 분석하고 인터페이스를 직접 크롤링하는 것이 가능하다고 언급했습니다. 게다가 인터페이스를 직접 크롤링하는 경우 대부분의 인터페이스가 json을 반환하기 때문에 HTML을 직접 구문 분석할 필요가 없습니다. 생각만 해도 행복해요~

    그러나 간단하고 사용하기 쉬운 Phantomjs를 사용하는 것과 같은 다른 방법도 있습니다. Python은 전능하지 않으며 다른 도구와 결합하면 더 큰 가치가 있습니다. 그런 조합.

    이것은 약간의 수정만으로 얻을 수 있는 공식 예제 코드입니다.

    으아악

    리노베이션

    으아악

    그러나 실제로는 페이지 내용 분석을 시작하기 전에 Ajax가 실행될 때까지 기다려야 하는 경우가 많습니다. 이때 공식에서 제공하는 샘플 코드를 사용하면 됩니다. 이 페이지에 대한 모든 요청이 로드될 때까지 기다릴 수 있습니다. 그런 다음 계속 처리하면 완전히 로드된 페이지가 표시되고 필요한 모든 작업을 수행할 수 있습니다.

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-17 17:58:25

    데이터 인터페이스를 직접 찾아보세요

    회신하다
    0
  • ringa_lee

    ringa_lee2017-04-17 17:58:25

    모두 API 인터페이스에 의해 생성되어야 합니다

    회신하다
    0
  • 高洛峰

    高洛峰2017-04-17 17:58:25

    셀레늄을 사용하여 새 디스크 차트를 생성하는 예:

    으아아아

    결과:
    오늘 공개
    주걸륜의 베드사이드 스토리
    H.A.M.
    3집EX'ACT
    Wild
    Dangerous Woman
    In the Dark
    작년은 복잡하다

    회신하다
    0
  • 阿神

    阿神2017-04-17 17:58:25

    Chrome에서 F12를 누르고 클릭하여 요청을 보면 URL과 매개변수를 쉽게 찾을 수 있습니다. 직접 구성한 다음 반환된 콘텐츠를 구문 분석하면 됩니다.

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-17 17:58:25

    이 js 줄은 index.html 아래에 인용되어 있습니다.

    으아아아

    이 js 파일을 열면 볼 수 있습니다

    으아아아

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-17 17:58:25

    크롬을 열어 요소를 검사하고 네트워크에서 js를 찾으세요. 일반적으로 특별한 이름을 가진 js가 찾고 있는 것일 수 있습니다. 예를 들어

    회신하다
    0
  • 黄舟

    黄舟2017-04-17 17:58:25

    가장 직접적인 방법은 셀레늄을 이용하는 것입니다

    회신하다
    0
  • 취소회신하다