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中操作字典之fromkeys()方法的使用
May 21 Python
使用Python解析JSON数据的基本方法
Oct 15 Python
菜鸟使用python实现正则检测密码合法性
Jan 05 Python
详解Python中open()函数指定文件打开方式的用法
Jun 04 Python
基于Django的python验证码(实例讲解)
Oct 23 Python
python使用os.listdir和os.walk获得文件的路径的方法
Dec 16 Python
python实现Windows电脑定时关机
Jun 20 Python
Python中的字符串切片(截取字符串)的详解
May 15 Python
详解Django模版中加载静态文件配置方法
Jul 21 Python
Python实现决策树并且使用Graphviz可视化的例子
Aug 09 Python
详解Pycharm与anaconda安装配置指南
Aug 25 Python
Python基于tkinter canvas实现图片裁剪功能
Nov 05 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中call_user_func函数使用注意事项
2014/11/21 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
2016/05/11 PHP
PHP仿微信多图片预览上传实例代码
2016/09/13 PHP
PHP的mysqli_rollback()函数讲解
2019/01/23 PHP
jquery复选框CHECKBOX全选、反选
2008/08/30 Javascript
JavaScript 面向对象之命名空间
2010/05/04 Javascript
WEB 浏览器兼容 推荐收藏
2010/05/14 Javascript
js禁止document element对象选中文本实现代码
2013/03/21 Javascript
JS常用正则表达式总结【经典】
2017/05/12 Javascript
详解Node.js开发中的express-session
2017/05/19 Javascript
Js实现京东无延迟菜单效果实例(demo)
2017/06/02 Javascript
Vue实现内部组件轮播切换效果的示例代码
2018/04/07 Javascript
vue v-model实现自定义样式多选与单选功能
2018/07/05 Javascript
react+ant design实现Table的增、删、改的示例代码
2018/12/27 Javascript
javascript实现摄像头拍照预览
2019/09/30 Javascript
vue+vant实现购物车全选和反选功能
2020/11/17 Vue.js
使用70行Python代码实现一个递归下降解析器的教程
2015/04/17 Python
在Python的web框架中编写创建日志的程序的教程
2015/04/30 Python
利用pyinstaller将py文件打包为exe的方法
2018/05/14 Python
详解Python 数据库的Connection、Cursor两大对象
2018/06/25 Python
Python统计python文件中代码,注释及空白对应的行数示例【测试可用】
2018/07/25 Python
Python实现的远程文件自动打包并下载功能示例
2019/07/12 Python
浅谈tensorflow中张量的提取值和赋值
2020/01/19 Python
在django admin详情表单显示中添加自定义控件的实现
2020/03/11 Python
opencv 图像加法与图像融合的实现代码
2020/07/08 Python
Python可以用来做什么
2020/11/23 Python
css3动画效果小结(推荐)
2016/07/25 HTML / CSS
css3 利用transform打造走动的2D时钟
2020/10/20 HTML / CSS
HTML+CSS3+JS 实现的下拉菜单
2020/11/25 HTML / CSS
苹果香港官方商城:Apple香港
2016/09/14 全球购物
this关键字的作用
2016/01/30 面试题
会计师事务所审计实习自我鉴定
2013/09/20 职场文书
函授毕业自我鉴定
2013/12/19 职场文书
助残日活动总结
2014/08/27 职场文书
物联网工程专业推荐信
2014/09/08 职场文书
2015元旦文艺汇演主持稿(开场白+结束语)
2014/12/14 职场文书