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中的多线程编程
Apr 09 Python
Python运算符重载用法实例
May 28 Python
Python压缩解压缩zip文件及破解zip文件密码的方法
Nov 04 Python
python图片验证码生成代码
Jul 02 Python
python Flask实现restful api service
Dec 04 Python
python调用Delphi写的Dll代码示例
Dec 05 Python
使用python爬取B站千万级数据
Jun 08 Python
Python3 使用cookiejar管理cookie的方法
Dec 28 Python
Python的几种主动结束程序方式
Nov 22 Python
Python selenium环境搭建实现过程解析
Sep 08 Python
python编写五子棋游戏
May 25 Python
Python字典的基础操作
Nov 01 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
农民C键的运用技巧
2020/03/04 星际争霸
.htaccess文件保护实例讲解
2011/02/06 PHP
php XPath对XML文件查找及修改实现代码
2011/07/27 PHP
php入门之连接mysql数据库的一个类
2012/04/21 PHP
php分页代码学习示例分享
2014/02/20 PHP
解密ThinkPHP3.1.2版本之模板继承
2014/06/19 PHP
Codeigniter(CI)框架分页函数及相关知识
2014/11/03 PHP
PHP利用func_get_args和func_num_args函数实现函数重载实例
2014/11/12 PHP
PHP使用preg_split()分割特殊字符(元字符等)的方法分析
2017/02/04 PHP
PHP 多进程与信号中断实现多任务常驻内存管理实例方法
2019/10/04 PHP
在JavaScript中使用inline函数的问题
2007/03/08 Javascript
firefox下对ajax的onreadystatechange的支持情况分析
2009/12/14 Javascript
jQuery.Autocomplete实现自动完成功能(详解)
2010/07/13 Javascript
javascript跨浏览器的属性判断方法
2014/03/16 Javascript
Egret引擎开发指南之创建项目
2014/09/03 Javascript
jQuery中$.ajax()和$.getJson()同步处理详解
2015/08/12 Javascript
angularJS与bootstrap结合实现动态加载弹出提示内容
2015/10/16 Javascript
nodejs操作mysql实现增删改查的实例
2017/05/28 NodeJs
深究AngularJS——ng-checked(回写:带真实案例代码)
2017/06/13 Javascript
JS与jQuery实现ListBox上移,下移,左移,右移操作功能示例
2018/05/31 jQuery
vueJs实现DOM加载完之后自动下拉到底部的实例代码
2018/08/31 Javascript
泛谈JS逻辑判断选择器 || &&
2019/05/24 Javascript
微信小程序弹窗禁止页面滚动的实现代码
2020/12/30 Javascript
基于python编写的微博应用
2014/10/17 Python
Python线程中对join方法的运用的教程
2015/04/09 Python
Python处理json字符串转化为字典的简单实现
2016/07/07 Python
在Pycharm中自动添加时间日期作者等信息的方法
2019/01/16 Python
python使用装饰器作日志处理的方法
2019/07/11 Python
解决python 文本过滤和清理问题
2019/08/28 Python
CSS3制作皮卡丘动画壁纸的示例
2020/11/02 HTML / CSS
伦敦一家非常流行的时尚精品店:Oxygen Boutique
2017/01/15 全球购物
中专毕业生自荐信
2013/11/16 职场文书
写求职信有哪些注意事项
2014/05/08 职场文书
安全隐患整改报告
2014/11/06 职场文书
单位接收证明格式
2015/06/18 职场文书
事业单位工作人员2015年度思想工作总结
2015/10/15 职场文书