Python爬虫包BeautifulSoup学习实例(五)


Posted in Python onJune 17, 2018

本文为大家分享了Python爬虫包BeautifulSoup学习实例,具体内容如下

BeautifulSoup

使用BeautifulSoup抓取豆瓣电影的一些信息。

# -*- coding: utf-8 -*-
# @Author: HaonanWu
# @Date:  2016-12-24 16:18:01
# @Last Modified by:  HaonanWu
# @Last Modified time: 2016-12-24 17:25:33

import urllib2
import json
from bs4 import BeautifulSoup

def nowplaying_movies(url):
  user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36'
  headers = {'User-Agent':user_agent}
  request = urllib2.Request(url = url, headers = headers)
  response = urllib2.urlopen(request)
  soup_packetpage = BeautifulSoup(response, 'lxml')
  items = soup_packetpage.findAll("li", class_="list-item")
  # items = soup_packetpage.findAll("li", {"class" : "list-item"}) 等价写法
  movies = []
  for item in items:
    if item.attrs['data-category'] == 'nowplaying':
      movie = {}
      movie['title'] = item.attrs['data-title']
      movie['score'] = item.attrs['data-score']
      movie['director'] = item.attrs['data-director']
      movie['actors'] = item.attrs['data-actors']
      movies.append(movie)
      print('%(title)s|%(score)s|%(director)s|%(actors)s' % movie)

  return movies



if __name__ == '__main__':
  url = 'https://movie.douban.com/nowplaying/beijing/'
  movies = nowplaying_movies(url)

  print('%s' % json.dumps(movies, sort_keys=True, indent=4, separators=(',', ': ')))

HTMLParser

使用HTMLParser实现上述功能

这里有一些HTMLParser的基础教程

由于HtmlParser自2006年以后就再没更新,目前很多人推荐使用jsoup代替它。

# -*- coding: utf-8 -*-
# @Author: HaonanWu
# @Date:  2016-12-24 15:57:54
# @Last Modified by:  HaonanWu
# @Last Modified time: 2016-12-24 17:03:27
from HTMLParser import HTMLParser
import urllib2
import json

class MovieParser(HTMLParser):
  def __init__(self):
    HTMLParser.__init__(self)
    self.movies = []

  def handle_starttag(self, tag, attrs):
    def _attr(attrlist, attrname):
      for attr in attrlist:
        if attr[0] == attrname:
          return attr[1]
      return None
    if tag == 'li' and _attr(attrs, 'data-title') and _attr(attrs, 'data-category') == 'nowplaying':
      movie = {}
      movie['title'] = _attr(attrs, 'data-title')
      movie['score'] = _attr(attrs, 'data-score')
      movie['director'] = _attr(attrs, 'data-director')
      movie['actors'] = _attr(attrs, 'data-actors')
      self.movies.append(movie)
      print('%(title)s|%(score)s|%(director)s|%(actors)s' % movie)


def nowplaying_movies(url):
  headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36'}  
  req = urllib2.Request(url, headers=headers)
  s = urllib2.urlopen(req)
  parser = MovieParser()
  parser.feed(s.read())
  s.close()
  return parser.movies


if __name__ == '__main__':
  url = 'https://movie.douban.com/nowplaying/beijing/'
  movies = nowplaying_movies(url)

  print('%s' % json.dumps(movies, sort_keys=True, indent=4, separators=(',', ': ')))

以上全部为本篇文章的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现定时播放mp3
Mar 29 Python
Python实现的数据结构与算法之双端队列详解
Apr 22 Python
Python通过90行代码搭建一个音乐搜索工具
Jul 29 Python
深入浅析python中的多进程、多线程、协程
Jun 22 Python
python基于json文件实现的gearman任务自动重启代码实例
Aug 13 Python
Python将主机名转换为IP地址的方法
Aug 14 Python
Python turtle画图库&&画姓名实例
Jan 19 Python
使用python turtle画高达
Jan 19 Python
Python Selenium截图功能实现代码
Apr 26 Python
CentOS 7如何实现定时执行python脚本
Jun 24 Python
Python sublime安装及配置过程详解
Jun 29 Python
Python之matplotlib绘制饼图
Apr 13 Python
Python爬虫包BeautifulSoup实例(三)
Jun 17 #Python
Python爬虫包BeautifulSoup异常处理(二)
Jun 17 #Python
Python爬虫包BeautifulSoup简介与安装(一)
Jun 17 #Python
python主线程捕获子线程的方法
Jun 17 #Python
Python实现获取邮箱内容并解析的方法示例
Jun 16 #Python
Python实现自定义函数的5种常见形式分析
Jun 16 #Python
Python基于jieba库进行简单分词及词云功能实现方法
Jun 16 #Python
You might like
php中全局变量global的使用演示代码
2011/05/18 PHP
PHP结合Mysql数据库实现留言板功能
2016/03/04 PHP
php实现图片以base64显示的方法
2016/10/13 PHP
innerHTML 和 getElementsByName 在IE下面的bug 的解决
2010/04/09 Javascript
js 绑定带参数的事件以及手动触发事件
2010/04/27 Javascript
10款非常有用的 Ajax 插件分享
2012/03/14 Javascript
jquery插件格式实例分析
2016/06/16 Javascript
jQuery文件上传控件 Uploadify 详解
2016/06/20 Javascript
jQuery 自定义下拉框(DropDown)附源码下载
2016/07/22 Javascript
JS实现队列的先进先出功能示例
2017/05/10 Javascript
vue-music关于Player播放器组件详解
2017/11/28 Javascript
javaScript实现鼠标在文字上悬浮时弹出悬浮层效果
2020/04/12 Javascript
vue-infinite-loading2.0 中文文档详解
2018/04/08 Javascript
详解写好JS条件语句的5条守则
2019/02/28 Javascript
Vue项目使用localStorage+Vuex保存用户登录信息
2019/05/27 Javascript
详解简单易懂的 ES6 Iterators 指南和示例
2019/09/24 Javascript
小程序实现录音功能
2020/09/22 Javascript
使用python加密自己的密码
2015/08/04 Python
Python3.6正式版新特性预览
2016/12/15 Python
Python实现的knn算法示例
2018/06/14 Python
Python PyPDF2模块安装使用解析
2020/01/19 Python
Gap工厂店:Gap Factory
2017/11/02 全球购物
法国二手MacBook销售网站:Okamac
2019/03/18 全球购物
GUESS Factory加拿大:牛仔裤、服装及配饰
2019/09/20 全球购物
Booking.com德国:预订最好的酒店和住宿
2020/02/16 全球购物
Wiggle澳大利亚:自行车、跑步、游泳商店
2020/11/07 全球购物
先进德育工作者事迹材料
2014/01/24 职场文书
高二政治教学反思
2014/02/01 职场文书
经典促销广告词大全
2014/03/19 职场文书
房屋租赁协议书范本
2014/04/10 职场文书
校园标语大全
2014/06/19 职场文书
2014党员民主评议个人思想剖析发言
2014/09/19 职场文书
保送生自荐信范文
2015/03/26 职场文书
员工福利申请报告
2015/05/15 职场文书
公司开业主持词
2015/07/02 职场文书
2016年寒假社会实践活动心得体会
2015/10/09 职场文书