Dieses Plug-in kann viele Inhalte, einschließlich HTML, problemlos anzeigen.
Öffnen Sie die 250 besten Douban-Filmranking-Webseiten und stellen Sie fest, dass sich auf jeder Seite 25 Filme befinden, also insgesamt 10 Seiten, und die URL jeder Seite Seite hat die folgenden Eigenschaften:
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
.... ..
Analog dazu müssen Sie nur eine Schleife verwenden, um die folgenden 0, 25,...225 zu verarbeiten.
Klicken Sie auf der Webseite auf einen beliebigen chinesischen Filmnamen, klicken Sie mit der rechten Maustaste und wählen Sie „Element anzeigen“, um den HTML-Quellcode anzuzeigen:
Sie können dort den Filmnamen finden wird in eingefügt, und gleichzeitig werden auch englische Namen in eingefügt.
Sie können den regulären Ausdruck (.*) verwenden, um den chinesischen Namen und den englischen Namen des Films abzugleichen, aber hier möchten Sie nur den chinesischen Namen erhalten, also müssen Sie filtern der englische Name.
Die Filtermethode kann mithilfe der Funktion find(str,pos_start,pos_end) implementiert werden, um die eindeutigen Merkmale in englischen Namen zu eliminieren: „ “ und „/“, Einzelheiten finden Sie im Code.
3. Code-Implementierung
Der Code hier ist relativ einfach, sodass keine Funktionen definiert werden müssen.
#!/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'<span class="title">(.*)</span>') names=re.findall(title,soup) for name in names: if name.find(' ')==-1 and name.find('/')==-1: # 剔除英文名(英文名特征是含有' '和'/') print name # 创建名称,评分 except Exception as e: print e print '爬取完毕!'