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的迭代器和生成器使用实例
Jan 14 Python
在Python中操作文件之seek()方法的使用教程
May 24 Python
Python+matplotlib实现华丽的文本框演示代码
Jan 22 Python
解决pycharm无法调用pip安装的包问题
May 18 Python
Python3用tkinter和PIL实现看图工具
Jun 21 Python
linux下安装python3和对应的pip环境教程详解
Jul 01 Python
Python识别快递条形码及Tesseract-OCR使用详解
Jul 15 Python
python pycharm的安装及其使用
Oct 11 Python
基于Python实现ComicReaper漫画自动爬取脚本过程解析
Nov 11 Python
wxPython窗体拆分布局基础组件
Nov 19 Python
python中random.randint和random.randrange的区别详解
Sep 20 Python
django中websocket的具体使用
Jan 22 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和MySql中计算时间差的方法
2011/04/22 PHP
php数据结构与算法(PHP描述) 查找与二分法查找
2012/06/21 PHP
PHP从FLV文件获取视频预览图的方法
2015/03/12 PHP
PHP抽奖算法程序代码分享
2015/10/08 PHP
详解PHP中mb_strpos的使用
2018/02/04 PHP
laravel5环境隐藏index.php后缀(apache)的方法
2019/10/12 PHP
PHP学习记录之常用的魔术常量详解
2019/12/12 PHP
IE浏览器兼容Firefox的JS脚本的代码
2008/10/23 Javascript
Prototype String对象 学习
2009/07/19 Javascript
jquery multiSelect 多选下拉框
2010/07/09 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
2016/02/03 Javascript
JS实现支持Ajax验证的表单插件
2016/03/24 Javascript
浅谈JS读取DOM对象(标签)的自定义属性
2016/11/21 Javascript
Angular2 PrimeNG分页模块学习
2017/01/14 Javascript
关于foreach循环中遇到的问题小结
2017/05/08 Javascript
深入理解Angular4订阅(Subscribe)与取消
2017/11/22 Javascript
vue登录注册及token验证实现代码
2017/12/14 Javascript
详解mpvue中使用vant时需要注意的onChange事件的坑
2019/05/16 Javascript
javascript中call,apply,callee,caller用法实例分析
2019/07/24 Javascript
[05:46]DOTA2英雄梦之声_第18期_陈
2014/06/20 DOTA
[02:31]《DAC最前线》之选手酒店现场花絮
2015/01/30 DOTA
Python中使用 Selenium 实现网页截图实例
2014/07/18 Python
python 提取tuple类型值中json格式的key值方法
2018/12/31 Python
Python redis操作实例分析【连接、管道、发布和订阅等】
2019/05/16 Python
flask 使用 flask_apscheduler 做定时循环任务的实现
2019/12/10 Python
Python 给下载文件显示进度条和下载时间的实现
2020/04/02 Python
运动服饰每月订阅盒:Ellie
2018/04/29 全球购物
Bally巴利英国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/07 全球购物
我的珠宝盒:Ma boîte à bijoux
2019/08/27 全球购物
酒吧员工的岗位职责
2013/11/26 职场文书
一名老师的自我评价
2014/02/07 职场文书
技术股份合作协议书
2014/10/05 职场文书
预备党员考察意见范文
2015/06/01 职场文书
2019 入党申请书范文
2019/07/10 职场文书
python面向对象版学生信息管理系统
2021/06/24 Python
windows安装 redis 6.2.6最新步骤详解
2022/04/26 Redis