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自然语言编码转换模块codecs介绍
Apr 08 Python
Python函数式编程指南(二):从函数开始
Jun 24 Python
Python的Tornado框架实现图片上传及图片大小修改功能
Jun 30 Python
Python科学计算包numpy用法实例详解
Feb 08 Python
Python实现针对给定单链表删除指定节点的方法
Apr 12 Python
示例详解Python3 or Python2 两者之间的差异
Aug 23 Python
python 制作自定义包并安装到系统目录的方法
Oct 27 Python
python使用pipeline批量读写redis的方法
Feb 18 Python
Python 限定函数参数的类型及默认值方式
Dec 24 Python
简单了解django处理跨域请求最佳解决方案
Mar 25 Python
Python打包exe时各种异常处理方案总结
May 18 Python
Python数据可视化之Seaborn的安装及使用
Apr 19 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操作xml入门之xml标签的属性分析
2015/01/23 PHP
smarty循环嵌套用法示例分析
2016/07/19 PHP
推荐11款jQuery开发的复选框和单选框美化插件
2011/08/02 Javascript
javascript 基础篇2 数据类型,语句,函数
2012/03/14 Javascript
根据json字符串生成Html的一种方式
2013/01/09 Javascript
使用javascript实现页面定时跳转总结篇
2013/09/21 Javascript
基于jQuery倒计时插件实现团购秒杀效果
2016/05/13 Javascript
Javascript 事件冒泡机制详细介绍
2016/10/10 Javascript
Bootstrap jquery.twbsPagination.js动态页码分页实例代码
2017/02/20 Javascript
Vue响应式原理详解
2017/04/18 Javascript
JavaScript实现的冒泡排序法及统计相邻数交换次数示例
2017/04/26 Javascript
详解Vue单元测试Karma+Mocha学习笔记
2018/01/31 Javascript
vue父组件向子组件传递多个数据的实例
2018/03/01 Javascript
Vue拖拽组件开发实例详解
2018/05/11 Javascript
微信小程序 swiper 组件遇到的问题及解决方法
2019/05/26 Javascript
Vue组件化开发之通用型弹出框的实现
2020/02/28 Javascript
vue-iview动态新增和删除的方法
2020/06/17 Javascript
[02:05]2014DOTA2西雅图邀请赛 老队长全明星大猜想谁不服就按进显示器
2014/07/08 DOTA
python实现可将字符转换成大写的tcp服务器实例
2015/04/29 Python
在Python的Django框架中生成CSV文件的方法
2015/07/22 Python
Python的pycurl包用法简介
2015/11/13 Python
详解tensorflow训练自己的数据集实现CNN图像分类
2018/02/07 Python
python3中获取文件当前绝对路径的两种方法
2018/04/26 Python
Python爬虫获取图片并下载保存至本地的实例
2018/06/01 Python
用python打印1~20的整数实例讲解
2019/07/01 Python
Numpy将二维数组添加到空数组的实现
2019/12/05 Python
python绘图模块之利用turtle画图
2021/02/12 Python
全球摩托车装备领导者:RevZilla
2017/09/04 全球购物
大型晚会策划方案
2014/02/06 职场文书
自荐信如何制作?
2014/02/21 职场文书
《蜗牛的奖杯》教后反思
2014/04/24 职场文书
本科毕业生自荐信
2014/06/02 职场文书
机关保密承诺书
2014/06/03 职场文书
弘扬焦裕禄精神走群众路线思想汇报
2014/09/12 职场文书
建国大业电影观后感
2015/06/01 职场文书
springBoot基于webSocket实现扫码登录
2021/06/22 Java/Android