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 相关文章推荐
bpython 功能强大的Python shell
Feb 16 Python
浅析Python中else语句块的使用技巧
Jun 16 Python
常见的python正则用法实例讲解
Jun 21 Python
Python使用迭代器打印螺旋矩阵的思路及代码示例
Jul 02 Python
利用Python爬取微博数据生成词云图片实例代码
Aug 31 Python
Python实现的摇骰子猜大小功能小游戏示例
Dec 18 Python
django将图片上传数据库后在前端显式的方法
May 25 Python
解决项目pycharm能运行,在终端却无法运行的问题
Jan 19 Python
python使用Plotly绘图工具绘制柱状图
Apr 01 Python
Python彻底删除文件夹及其子文件方式
Dec 23 Python
Python几种常见算法汇总
Jun 02 Python
详解pandas映射与数据转换
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
Zend Framework页面缓存实例
2014/06/25 PHP
PHP Session机制简介及用法
2014/08/19 PHP
php函数serialize()与unserialize()用法实例
2014/11/06 PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
2015/04/17 PHP
PHP区块查询实现方法分析
2018/05/12 PHP
JS解密入门 最终变量劫持
2008/06/25 Javascript
jquery 回车事件实现代码
2011/08/23 Javascript
JS解决url传值出现中文乱码的另类办法
2013/04/08 Javascript
drag-and-drop实现图片浏览器预览
2015/08/06 Javascript
javascript实现一个网页加载进度loading
2017/01/04 Javascript
详解如何在Vue2中实现组件props双向绑定
2017/03/29 Javascript
Node批量爬取头条视频并保存方法
2018/09/20 Javascript
vue中将html字符串转换成html后遇到的问题小结
2018/12/10 Javascript
jquery实现垂直手风琴导航栏
2020/02/18 jQuery
原生js实现的观察者和订阅者模式简单示例
2020/04/18 Javascript
[01:09]DOTA2次级职业联赛 - ishow.HMM战队宣传片
2014/12/01 DOTA
Python字符串转换成浮点数函数分享
2015/07/24 Python
python类的方法属性与方法属性的动态绑定代码详解
2017/12/27 Python
Python实现简单的用户交互方法详解
2018/09/25 Python
Python中的几种矩阵乘法(小结)
2019/07/10 Python
Python虚拟环境库virtualenvwrapper安装及使用
2020/06/17 Python
科颜氏加拿大官方网站: Kiehl’s加拿大
2016/08/16 全球购物
Feelunique中文官网:欧洲最大化妆品零售电商
2020/07/10 全球购物
python re模块和正则表达式
2021/03/24 Python
电脑教师的自我评价
2013/12/18 职场文书
大学生的网络创业计划书
2013/12/26 职场文书
小学语文课后反思精选
2014/04/25 职场文书
安全目标管理责任书
2014/07/25 职场文书
借条如何写
2015/05/26 职场文书
2015年社区党建工作汇报材料
2015/06/25 职场文书
《落花生》教学反思
2016/02/16 职场文书
vue-cli4.5.x快速搭建项目
2021/05/30 Vue.js
缓存替换策略及应用(以Redis、InnoDB为例)
2021/07/25 Redis
Python装饰器的练习题
2021/11/23 Python
Nginx报404错误的详细解决方法
2022/07/23 Servers
Win10服务全部禁用了怎么启动?Win10服务全部禁用解决方法
2022/09/23 数码科技