>  기사  >  백엔드 개발  >  Python이 ajax(클래식)에 의해 동적으로 생성된 데이터를 크롤링하는 방법을 설명하기 위해 Taobao 주석을 수집하는 예를 사용합니다.

Python이 ajax(클래식)에 의해 동적으로 생성된 데이터를 크롤링하는 방법을 설명하기 위해 Taobao 주석을 수집하는 예를 사용합니다.

不言
不言원래의
2018-04-18 11:14:433947검색

Python을 배우다 보면 웹 사이트 콘텐츠가 Ajax 동적 요청 및 비동기 새로 고침을 통해 생성된 json 데이터이고 Python을 통해 정적 웹 콘텐츠를 크롤링하는 이전 방법이 불가능한 상황에 직면하게 되므로 이번 기사에서는 그 방법에 대해 이야기하겠습니다. Python에서 ajax에 의해 동적으로 생성된 데이터를 크롤링합니다.

Python을 배우다 보면 웹 사이트 콘텐츠가 Ajax 동적 요청 및 비동기 새로 고침을 통해 생성된 json 데이터이고 Python을 통해 정적 웹 콘텐츠를 크롤링하는 이전 방법이 불가능한 상황에 직면하게 되므로 이 글에서는 이 글에서 설명하겠습니다. Python에서 ajax에 의해 동적으로 생성된 데이터를 크롤링하는 방법.

정적인 웹 콘텐츠를 읽는 방법에 관심이 있는 분들은 이 글의 내용을 확인해 보세요.

여기에서는 Taobao 댓글 크롤링을 예로 들어 방법을 설명합니다.

이것은 주로 4단계로 나뉩니다:

먼저 Taobao 리뷰를 받을 때 ajax는 링크(url)를 요청합니다

두 번째, ajax 요청에 의해 반환된 json 데이터를 가져옵니다

셋, 파이썬을 사용하여 json 데이터 파싱하기

Four 파싱된 결과 저장하기

1단계:

타오바오 댓글을 받을 때, ajax 요청 링크(url) 여기서는 크롬 브라우저를 사용합니다. 완료합니다. Taobao 링크를 열고 검색창에서 "신발"과 같은 제품을 검색합니다. 여기서는 첫 번째 제품을 선택합니다.

그런 다음 새 웹페이지로 이동합니다. 여기서는 사용자 리뷰를 크롤링해야 하므로 Accumulated Ratings를 클릭합니다.

그런 다음 제품에 대한 사용자 평가를 볼 수 있습니다. 이때 웹 페이지를 마우스 오른쪽 버튼으로 클릭하여 리뷰 요소를 선택하거나 F12를 사용하여 직접 열고 그림과 같이 네트워크 옵션을 선택합니다. 사진에서:

사용자 댓글에서 아래쪽으로 스크롤하여 다음 또는 두 번째 페이지를 클릭하면 네트워크에 동적으로 추가된 여러 항목이 표시됩니다. list_detail_rate.htm?itemId=로 시작합니다. 35648967399.

그런 다음 이 옵션을 클릭하면 오른쪽 옵션 상자에서 링크에 대한 정보를 볼 수 있으며 요청 URL에 링크 내용을 복사하려고 합니다.

브라우저의 주소 표시줄에 방금 얻은 URL 링크를 입력합니다. 페이지를 열면 필요한 데이터가 반환되지만 JSON 데이터이기 때문에 지저분해 보입니다.

2 ajax 요청에서 반환된 json 데이터 가져오기

다음으로 URL에서 json 데이터를 가져옵니다. 제가 사용하는 Python 편집기는 pycharm입니다. Python 코드를 살펴보겠습니다.

# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import requests
url='https://rate.tmall.com/list_detail_rate.htm?itemId=35648967399&spuId=226460655&sellerId=1809124267ℴ=3&currentPage=1&append=0&content=1&tagId=&posi=&picture=&ua=011UW5TcyMNYQwiAiwQRHhBfEF8QXtHcklnMWc%3D%7CUm5OcktyT3ZCf0B9Qn9GeC4%3D%7CU2xMHDJ7G2AHYg8hAS8WKAYmCFQ1Uz9YJlxyJHI%3D%7CVGhXd1llXGVYYVVoV2pVaFFvWGVHe0Z%2FRHFMeUB4QHxCdkh8SXJcCg%3D%3D%7CVWldfS0RMQ47ASEdJwcpSDdNPm4LNBA7RiJLDXIJZBk3YTc%3D%7CVmhIGCUFOBgkGiMXNwswCzALKxcpEikJMwg9HSEfJB8%2FBToPWQ8%3D%7CV29PHzEfP29VbFZ2SnBKdiAAPR0zHT0BOQI8A1UD%7CWGFBET8RMQszDy8QLxUuDjIJNQA1YzU%3D%7CWWBAED4QMAU%2BASEYLBksDDAEOgA1YzU%3D%7CWmJCEjwSMmJXb1d3T3JMc1NmWGJAeFhmW2JCfEZmWGw6GicHKQcnGCUdIBpMGg%3D%3D%7CW2JfYkJ%2FX2BAfEV5WWdfZUV8XGBUdEBgVXVJciQ%3D&isg=82B6A3A1ED52A6996BCA2111C9DAAEE6&_ksTS=1440490222698_2142&callback=jsonp2143' #这里的url比较长
content=requests.get(url).content

print content #인쇄된 콘텐츠는 이전에 웹페이지에서 얻은 json 데이터입니다. 사용자 의견을 포함합니다.

여기 내용은 우리에게 필요한 json 데이터입니다. 다음 단계는 이러한 json 데이터를 구문 분석하는 것입니다. 삼 json을 가져와야 합니다

cont=requests.get(url).content # 웹 페이지에서 json 데이터 가져오기rex=re.compile(r'w+[(]{1}(.*)[)]{ 1}') #정규식 제거 cont 데이터에서 중복되는 부분은 실제 json 형식 데이터 {"a":"b","c":"d"}con=json.loads( content,"gbk") json 사용 로드 함수는 콘텐츠 콘텐츠를 json 라이브러리 함수로 처리할 수 있는 데이터 형식으로 변환합니다. win 시스템의 기본값은 gbk

count이므로 "gbk"는 데이터의 인코딩 방법입니다. =len(con['rateDetail']['rateList']) # 사용자 댓글 수를 가져옵니다(여기는 현재 페이지에만 적용됩니다)

for i in xrange(count):

print con['rateDetail'] ['rateList'][i]['appendComment']

#Loop traversal 사용자 코멘트 및 출력 (데이터는 필요에 따라 저장할 수도 있습니다. 네 번째 부분을 확인할 수 있습니다.)

여기서 어려운 점은 경로를 찾는 것입니다. 지저분한 json 데이터 속 사용자 댓글

IV 파싱된 결과 저장

여기에서 사용자는 사용자의 댓글 정보를 csv 형식으로 저장하는 등 로컬에 저장할 수 있습니다.

이 글은 여기까지입니다. 모두 마음에 드셨으면 좋겠습니다.

위 내용은 Python이 ajax(클래식)에 의해 동적으로 생성된 데이터를 크롤링하는 방법을 설명하기 위해 Taobao 주석을 수집하는 예를 사용합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.