>  기사  >  백엔드 개발  >  앱 다운로드 링크를 크롤링하는 Python 방법

앱 다운로드 링크를 크롤링하는 Python 방법

高洛峰
高洛峰원래의
2017-02-24 15:07:582168검색

첫 번째 준비 작업입니다

Python 2.7.11: Python 다운로드

Pycharm: Pycharm 다운로드

여기서 python2 및 python3은 현재 동기 릴리스입니다. 여기서는 python2를 환경으로 사용하고 있습니다. Pycharm은 비교적 효율적인 Python IDE이지만 결제가 필요합니다.

기본 구현 아이디어

우선, 대상 웹사이트: Android 마켓

[App]을 클릭합니다. 주요 페이지에 들어가려면:

앱 다운로드 링크를 크롤링하는 Python 방법

애플리케이션 인터페이스로 이동한 후 아래 그림의 빨간색 상자는 다음을 나타냅니다.

앱 다운로드 링크를 크롤링하는 Python 방법

먼저 주소 표시줄의 URL에 주목한 다음, 무료 다운로드 버튼에 주목하고, 그 다음 하단의 페이지 넘김 옵션에 주목하세요. "무료 다운로드" 버튼을 클릭하면 해당 앱이 즉시 다운로드되므로 클릭하여 다운로드 링크를 받아 앱을 직접 다운로드하는 것이 좋습니다.

크롤러 작성

첫 번째 해결해야 할 사항: 위에서 언급한 다운로드 링크를 어떻게 얻나요? 여기서는 브라우저가 웹 페이지를 표시하는 방법에 대한 기본 원칙을 소개해야 합니다. 간단히 말해서, 브라우저는 HTML 및 기타 코드를 받으면 해당 규칙에 따라 구문 분석하고 렌더링하여 페이지를 볼 수 있도록 하는 파서와 유사한 도구입니다.

저는 여기서 Google Chrome을 사용하고 있습니다. 페이지를 마우스 오른쪽 버튼으로 클릭하고 "검사"를 클릭하면 웹페이지의 원본 HTML 코드를 볼 수 있습니다.

앱 다운로드 링크를 크롤링하는 Python 방법

보세요. 멋진 HTML 코드가 보이더라도 걱정하지 마세요. Google Chrome의 검토 요소에는 페이지 컨트롤에 해당하는 HTML 코드를 찾는 데 도움이 되는 유용한 기능이 있습니다.

위치:

앱 다운로드 링크를 크롤링하는 Python 방법

위 그림과 같이 위 직사각형 박스 안의 작은 화살표를 클릭한 후, 페이지에서 해당 위치를 클릭하면 오른쪽 HTML 코드가 자동으로 위치가 지정되어 강조 표시됩니다.

다음으로 다운로드 버튼에 해당하는 HTML 코드를 찾습니다.

앱 다운로드 링크를 크롤링하는 Python 방법

버튼에 해당하는 코드에 해당 다운로드가 있는 것을 볼 수 있습니다. 링크: [/ appdown/com.tecent.mm], 접두어를 더한 전체 다운로드 링크는 http://apk.hiapk.com/appdown/com.tecent.mm

Python을 먼저 사용하십시오. 전체 페이지의 HTML을 얻는 것은 매우 간단합니다. "

"를 사용하고 해당 URL을 입력하기만 하면 됩니다. requests.get(url)

앱 다운로드 링크를 크롤링하는 Python 방법

다음으로 페이지의 주요 정보를 크롤링할 때 "큰 것을 먼저 파악하고 그 다음 작은 것을 파악한다"는 생각을 채택합니다. HTML 코드의 10개 항목에 해당하는 10개의 앱이 페이지에 있는 것을 볼 수 있습니다.

앱 다운로드 링크를 크롤링하는 Python 방법

그리고 각 li 태그에는 해당 앱의 속성(이름)이 포함되어 있습니다. , 다운로드 링크 등). 따라서 첫 번째 단계에서는 다음 10개의 li 태그를 추출합니다.


def geteveryapp(self,source):
  everyapp = re.findall(&#39;(<li class="list_item".*?</li>)&#39;,source,re.S)
  #everyapp2 = re.findall(&#39;(<p class="button_bg button_1 right_mt">.*?</p>)&#39;,everyapp,re.S)
  return everyapp


여기서는 간단한 정규식 지식이 사용됩니다

li 태그에서 다운로드 링크를 추출합니다:



def getinfo(self,eachclass):
  info = {}
  str1 = str(re.search(&#39;<a href="(.*?)">&#39;, eachclass).group(0))
  app_url = re.search(&#39;"(.*?)"&#39;, str1).group(1)
  appdown_url = app_url.replace(&#39;appinfo&#39;, &#39;appdown&#39;)
  info[&#39;app_url&#39;] = appdown_url
  print appdown_url
  return info


다음 어려움은 페이지 넘기기입니다. 페이지 넘기기를 클릭한 후 아래 버튼을 누르면 주소 표시줄이 다음과 같이 변경된 것을 확인할 수 있습니다.

앱 다운로드 링크를 크롤링하는 Python 방법

앱 다운로드 링크를 크롤링하는 Python 방법

豁然开朗,我们可以在每次的请求中替换URL中对应的id值实现翻页。


def changepage(self,url,total_page):
  now_page = int(re.search(&#39;pi=(\d)&#39;, url).group(1))
  page_group = []
  for i in range(now_page,total_page+1):
   link = re.sub(&#39;pi=\d&#39;,&#39;pi=%s&#39;%i,url,re.S)
   page_group.append(link)
  return page_group


爬虫效果

关键位置说完了,我们先看下最后爬虫的效果:

앱 다운로드 링크를 크롤링하는 Python 방법

在TXT文件中保存结果如下:

앱 다운로드 링크를 크롤링하는 Python 방법

直接复制进迅雷就可以批量高速下载了。

附上全部代码


#-*_coding:utf8-*-
import requests
import re
import sys
reload(sys)
sys.setdefaultencoding("utf-8")

class spider(object):
 def __init__(self):
  print u'开始爬取内容'
 def getsource(self,url):
  html = requests.get(url)
  return html.text

 def changepage(self,url,total_page):
  now_page = int(re.search(&#39;pi=(\d)&#39;, url).group(1))
  page_group = []
  for i in range(now_page,total_page+1):
   link = re.sub(&#39;pi=\d&#39;,&#39;pi=%s&#39;%i,url,re.S)
   page_group.append(link)
  return page_group

 def geteveryapp(self,source):
  everyapp = re.findall('(
  • )',source,re.S) return everyapp def getinfo(self,eachclass): info = {} str1 = str(re.search(&#39;<a href="(.*?)">&#39;, eachclass).group(0)) app_url = re.search(&#39;"(.*?)"&#39;, str1).group(1) appdown_url = app_url.replace(&#39;appinfo&#39;, &#39;appdown&#39;) info[&#39;app_url&#39;] = appdown_url print appdown_url return info def saveinfo(self,classinfo): f = open('info.txt','a') str2 = "http://apk.hiapk.com" for each in classinfo: f.write(str2) f.writelines(each['app_url'] + '\n') f.close() if __name__ == '__main__': appinfo = [] url = 'http://apk.hiapk.com/apps/MediaAndVideo?sort=5&pi=1' appurl = spider() all_links = appurl.changepage(url, 5) for link in all_links: print u'正在处理页面' + link html = appurl.getsource(link) every_app = appurl.geteveryapp(html) for each in every_app: info = appurl.getinfo(each) appinfo.append(info) appurl.saveinfo(appinfo)

  • 总结

    选取的目标网页相对结构清晰简单,这是一个比较基本的爬虫。代码写的比较乱请见谅,以上就是这篇文章的全部内容了,希望能对大家的学习或者工作带来一定的帮助,如果有问题大家可以留言交流。

    更多앱 다운로드 링크를 크롤링하는 Python 방법相关文章请关注PHP中文网!

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