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实现爬取逐浪小说的方法
Jul 07 Python
python实现自动解数独小程序
Jan 21 Python
python+selenium实现简历自动刷新的示例代码
May 20 Python
谈一谈基于python的面向对象编程基础
May 21 Python
django解决订单并发问题【推荐】
Jul 31 Python
Python列表的切片实例讲解
Aug 20 Python
numpy 声明空数组详解
Dec 05 Python
Python 定义只读属性的实现方式
Mar 05 Python
Anconda环境下Vscode安装Python的方法详解
Mar 29 Python
python初步实现word2vec操作
Jun 09 Python
python如何提升爬虫效率
Sep 27 Python
Django如何实现防止XSS攻击
Oct 13 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的pcntl多进程用法实例
2015/03/19 PHP
提高Laravel应用性能方法详解
2019/06/24 PHP
javascript中的void运算符语法及使用介绍
2013/03/10 Javascript
js实现的GridView即表头固定表体有滚动条且可滚动
2014/02/19 Javascript
jQuery控制TR显示隐藏的几种方法
2014/06/18 Javascript
js实现飞入星星特效代码
2014/10/17 Javascript
node.js中的url.format方法使用说明
2014/12/10 Javascript
jQuery插件cxSelect多级联动下拉菜单实例解析
2016/06/24 Javascript
vue.js 1.x与2.0中js实时监听input值的变化
2017/03/15 Javascript
vue2.0实现前端星星评分功能组件实例代码
2018/02/12 Javascript
ES6知识点整理之数组解构和字符串解构的应用示例
2019/04/17 Javascript
小程序组件之自定义顶部导航实例
2019/06/12 Javascript
Ant Design Pro 下实现文件下载的实现代码
2019/12/03 Javascript
vue excel上传预览和table内容下载到excel文件中
2019/12/10 Javascript
[02:03]完美世界DOTA2联赛10月30日赛事集锦
2020/10/31 DOTA
Python中的列表生成式与生成器学习教程
2016/03/13 Python
200行自定义python异步非阻塞Web框架
2017/03/15 Python
python利用Guetzli批量压缩图片
2017/03/23 Python
python 换位密码算法的实例详解
2017/07/19 Python
Window10+Python3.5安装opencv的教程推荐
2018/04/02 Python
快速解决pandas.read_csv()乱码的问题
2018/06/15 Python
python 把列表转化为字符串的方法
2018/10/23 Python
pandas DataFrame 删除重复的行的实现方法
2019/01/29 Python
Python OrderedDict的使用案例解析
2019/10/25 Python
python 的numpy库中的mean()函数用法介绍
2020/03/03 Python
python3 中时间戳、时间、日期的转换和加减操作
2020/07/14 Python
关于canvas.toDataURL 在iOS运行失败的问题解决
2020/09/16 HTML / CSS
浅析HTML5页面元素及属性
2021/01/20 HTML / CSS
Paradigit比利时电脑卖场:购买笔记本、电脑、平板和外围设备
2016/11/28 全球购物
阿联酋电子产品购物网站:Menakart
2017/09/15 全球购物
Cecil Mode法国在线商店:女性时尚
2021/01/08 全球购物
同学聚会主持词
2014/03/18 职场文书
信用卡结清证明怎么写
2014/09/13 职场文书
学生检讨书如何写
2014/10/30 职场文书
优秀护士事迹材料
2014/12/25 职场文书
python制作图形界面的2048游戏, 基于tkinter
2021/04/06 Python