• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

利用python2.7抓取豆瓣电影top250

python 搞代码 4年前 (2022-01-09) 24次浏览 已收录 0个评论

这个插件可以方便查看包括HTML在内许多内容

打开豆瓣电影排行榜top250网页,发现每页有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源代码:

可以发现电影名称放在 中,同时英文名也放在 中。

可以利用正则表达式(.*)匹配电影的中文名和英文名,但这里只想得到中文名,所以需要过滤英文名。

过滤方法可以利用find(str,pos_start,pos_end)函数实现,剔除英文名字里特有的特征:‘ ’和‘/’,详见代码。

3.代码实现

这里代码比较简单,因此就不用定义函数了。

#!/usr/bin/python# -*- coding: utf-8 -*- #import requests,sys,refrom bs4 import BeautifulSoupreload(sys)sys.setdefaultencoding('utf-8')print '正在从豆瓣电影Top250抓取数据......'for page in range(10):    url='https://movie.douban.com/top250?start='+str((page-1)*25)    print '-------------<span>本文来源gaodai#ma#com搞*!代#%^码$网*</span>--------------正在爬取第'+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 eprint '爬取完毕!'

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:利用python2.7抓取豆瓣电影top250

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址