>  기사  >  백엔드 개발  >  python2.7을 사용하여 상위 250개 Douban 영화 캡처

python2.7을 사용하여 상위 250개 Douban 영화 캡처

高洛峰
高洛峰원래의
2016-11-03 16:53:311934검색

이 플러그인은 HTML을 포함한 많은 콘텐츠를 쉽게 볼 수 있습니다

두반 영화 순위 상위 250위 웹페이지를 열어보면 각 페이지에 25편의 영화가 있고 총 10페이지이며 각 영화의 URL이 나와 있습니다. 페이지의 특징은 다음과 같습니다.

http://movie.douban.com/top250?start=0

http://movie.douban.com/top250?start=25

http:/ /movie.douban.com/top250?start=50

http://movie.douban.com/top250?start=75

.... ..

유추하자면 다음 0, 25,...225를 처리하려면 루프만 사용하면 됩니다.

웹페이지에서 중국 영화 이름을 클릭하고 마우스 오른쪽 버튼을 클릭한 다음 "요소 보기"를 클릭하면 HTML 소스 코드를 볼 수 있습니다. python2.7을 사용하여 상위 250개 Douban 영화 캡처

영화 이름은 다음과 같습니다. 에 들어가고, 동시에 에는 영문 이름도 들어간다.

정규식 (.*)을 사용하여 영화의 중국어 이름과 영어 이름을 일치시킬 수 있지만 여기서는 중국어 이름만 가져오려고 하므로 필터링해야 합니다. 영어 이름.

Find(str,pos_start,pos_end) 함수를 사용하여 필터링 방법을 구현하면 영어 이름 ' ' 및 '/'의 고유한 기능을 제거할 수 있습니다. 자세한 내용은 코드를 참조하세요.

3. 코드 구현

여기의 코드는 비교적 간단하므로 함수를 정의할 필요가 없습니다.

#!/usr/bin/python
# -*- coding: utf-8 -*- #
import requests,sys,re
from bs4 import BeautifulSoup

reload(sys)
sys.setdefaultencoding('utf-8')
print '正在从豆瓣电影Top250抓取数据......'

for page in range(10):
    url='https://movie.douban.com/top250?start='+str((page-1)*25)
    print '---------------------------正在爬取第'+str(page+1)+'页......--------------------------------'
    html=requests.get(url)
    html.raise_for_status()
    try:
        soup=BeautifulSoup(html.text,'html.parser')
        soup=str(soup) # 利用正则表达式需要将网页文本转换成字符串
        title=re.compile(r&#39;<span class="title">(.*)</span>&#39;)
        names=re.findall(title,soup)
        for name in names:
            if name.find(&#39; &#39;)==-1 and name.find(&#39;/&#39;)==-1: # 剔除英文名(英文名特征是含有&#39; &#39;和&#39;/&#39;)
                print name
            # 创建名称,评分
    except Exception as e:
        print e
print &#39;爬取完毕!&#39;


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