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备份Mysql脚本
Aug 11 Python
Python 错误和异常小结
Oct 09 Python
python实现的简单窗口倒计时界面实例
May 05 Python
使用Python进行QQ批量登录的实例代码
Jun 11 Python
python3+selenium实现126邮箱登陆并发送邮件功能
Jan 23 Python
python算法与数据结构之单链表的实现代码
Jun 27 Python
Python解析json时提示“string indices must be integers”问题解决方法
Jul 31 Python
Python vtk读取并显示dicom文件示例
Jan 13 Python
Python可变对象与不可变对象原理解析
Feb 25 Python
selenium WebDriverWait类等待机制的实现
Mar 18 Python
Python实现aes加密解密多种方法解析
May 15 Python
详解用Python把PDF转为Word方法总结
Apr 27 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 网页播放器用来播放在线视频的代码(自动判断并选择视频文件类型)
2010/06/03 PHP
PHP中替换换行符的几种方法小结
2012/10/15 PHP
php生成唯一的订单函数分享
2015/02/02 PHP
Linux php 中文乱码的快速解决方法
2016/05/13 PHP
PHP学习笔记之php文件操作
2016/06/03 PHP
Fleaphp常见函数功能与用法示例
2016/11/15 PHP
php传值方式和ajax的验证功能
2017/03/27 PHP
Laravel框架在本地虚拟机快速安装的方法详解
2018/06/11 PHP
javascript 变量作用域 代码分析
2009/06/26 Javascript
禁止你的左键复制实用技巧
2013/01/04 Javascript
深入理解JavaScript系列(38):设计模式之职责链模式详解
2015/03/04 Javascript
Bootstrap精简教程中秋大放送
2016/09/15 Javascript
通过扫描二维码打开app的实现代码
2016/11/10 Javascript
原生js实现电商侧边导航效果
2017/01/19 Javascript
js+html5生成自动排列对话框实例
2017/10/09 Javascript
js实现简单选项卡功能
2020/03/23 Javascript
vue的路由映射问题及解决方案
2019/10/14 Javascript
Vue表单控件数据绑定方法详解
2020/02/05 Javascript
JavaScript实现HTML导航栏下拉菜单
2020/11/25 Javascript
[01:08]DOTA2次级职业联赛 - Shield战队宣传片
2014/12/01 DOTA
用Python代码来绘制彭罗斯点阵的教程
2015/04/03 Python
PyMongo安装使用笔记
2015/04/27 Python
python删除过期log文件操作实例解析
2018/01/31 Python
Python实现自动装机功能案例分析
2020/10/22 Python
基于Django集成CAS实现流程详解
2020/11/28 Python
html5的canvas实现3d雪花飘舞效果
2013/12/27 HTML / CSS
HTML5 canvas绘制的玫瑰花效果
2014/05/29 HTML / CSS
采购部岗位职责
2013/11/24 职场文书
学生会主席就职演讲稿
2014/01/14 职场文书
共产党员公开承诺践诺书
2014/05/28 职场文书
计算机应用专业自荐信
2014/07/05 职场文书
酒桌上的开场白
2015/06/01 职场文书
房屋所有权证明
2015/06/19 职场文书
旷工检讨书大全
2015/08/15 职场文书
乡镇团代会开幕词
2016/03/04 职场文书
Win10/Win11 任务栏替换成经典样式
2022/04/19 数码科技