之前看静觅博客,关于BeautifulSoup的用法不太熟练,所以趁机在网上搜索相关的视频,其中一个讲的还是挺清楚的:python爬虫小白入门之BeautifulSoup库,有空做了一下笔记:

一、爬虫前的基本准备

1. 如何安装BeautifulSoup?

pip install beautifulsoup4 或 easy_install beautifulsoup4

注意:python2用BS4,但python3可以考虑用BS3,BS4对python3支持不够好

2. 如何查看BeautifulSoup已经安装?

打开IDE,用from bs4 import BeautifulSoup不报错 或 在cmd中输入pip list查看pip已安装的第三方库

3. 爬虫模块了解多少?

爬虫模块:urllib、urllib2、Requests、BeautifulSoup、Scrapy、lxml等

二、BeautifulSoup基础知识

1. 如何获取自定义html标签的内容?

 #-*-coding:utf-8-*-

 from bs4 import BeautifulSoup

 html = '<title>女朋友</title>'
 soup = BeautifulSoup(html, 'html.parser')    #创建一个beautifulsoup对象,html.parser为默认的网页解析器
 print soup.title                             #获取title标签内容

运行结果:<title>女朋友</title>

数据:<div>,<title>,<a>...标签

找到标签的内容:soup.div(标签的名字)

2. 如何获取本地html文件的内容?

 #-*-coding:utf-8-*-

 from bs4 import BeautifulSoup

 soup = BeautifulSoup(open('C:\\Users\\Administrator\\Desktop\\a.html'), 'html.parser')    #在本地创建一个名叫a.html的html文件
 print soup.prettify()                                                                     #打印soup对象的内容,格式化输出

结果:<h1> 今天是周五</h1><p> 你们都很棒</p> 

打开本地的html文件:open

打印本地文件的内容:soup.prettify()

3. html源代码相同的标签有很多,怎么获取到我想要的那一部分内容?

 #-*-fulcoding:utf-8-*-

 from bs4 import BeautifulSoup

 html = '<div class="a">科里小姐姐</div><div class="b">若兰姐姐小溪姐姐</div>'
 soup = BeautifulSoup(html, 'html.parser')
 e = soup.find('div', class_ = "b")          #class是python关键字,所以用class过滤,必须加下划线_
 print e.text                                #.text获取文本

结果:若兰姐姐小溪姐姐

网页:名字,class,id

find(name,attrs,recursive,text,**wargs):这些参数相当于过滤器一样进行筛选处理

name:基于标签的名字

attrs:基于标签的属性

recursive:基于是否使用递归查找

text:基于文本参数

**wargs:基于函数的查找

4. 区分点:find   find_all

 #-*-fulcoding:utf-8-*-

 from bs4 import BeautifulSoup

 html = '<a href="www.baidu.com">百度</a><a href="www.sina.com.cn">新浪</a>'
 soup = BeautifulSoup(html, 'html.parser')

 #先用find
 a = soup.find('a')
 print a.get('href')

 #再用find_all
 b = soup.find_all('a')
 for c in b:
     print c.get('href')

结果:find:www.baidu.com

find_all:www.baidu.comwww.sina.com.cn

可知:find_all()返回的是一个列表,可以遍历html文件中包含某一元素的所有字串,而find()只会找到第一个。

find_all()能够限制返回结果的数量,如soup.find_all('a', limit = 2),当limit = 1时,find()与find_all()结果相同。

5. 如何对付反爬虫?

增加头部信息headers。urllib2.Request()有三个参数,即urllib2(url, data, headers),如何我们爬取网页时得不到响应,有可能是网站建立了反爬虫机制,我们需要增加头部信息,模拟浏览器来登录,从而成功获取所需要的数据。

三、实战:爬取豆瓣妹子的图片

 #-*-coding: utf-8-*-

 from bs4 import BeautifulSoup    #从网页抓取数据
 import urllib2, urllib

 def crawl(url):                                          #网站反爬虫,模拟浏览器访问,加上headers头部信息
     headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'}
     request = urllib2.Request(url, headers = headers)    #用url创建一个request对象
     response = urllib2.urlopen(request, timeout = 20)
     contents = response.read()                           #获取源码

     soup = BeautifulSoup(contents, 'html.parser')
     my_girl = soup.find_all('img')
     x = 0
     for girl in my_girl:
         link = girl.get('src')
         print link
         urllib.urlretrieve(link, 'E:\\image\\%s.jpg' %x) #urlretrieve是保存图片到本地
         x += 1

 url = 'https://www.dbmeinv.com/?pager_offset=1'
 crawl(url)

Python爬虫之BeautifulSoup的用法的更多相关文章

  1. python爬虫---selenium库的用法

    python爬虫---selenium库的用法 selenium是一个自动化测试工具,支持Firefox,Chrome等众多浏览器 在爬虫中的应用主要是用来解决JS渲染的问题. 1.使用前需要安装这个 ...

  2. 使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解(新手必学)

    为大家介绍下Python爬虫库BeautifulSoup遍历文档树并对标签进行操作的详细方法与函数下面就是使用Python爬虫库BeautifulSoup对文档树进行遍历并对标签进行操作的实例,都是最 ...

  3. 【Python爬虫】BeautifulSoup网页解析库

    BeautifulSoup 网页解析库 阅读目录 初识Beautiful Soup Beautiful Soup库的4种解析器 Beautiful Soup类的基本元素 基本使用 标签选择器 节点操作 ...

  4. Python爬虫——用BeautifulSoup、python-docx爬取廖雪峰大大的教程为word文档

    版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com 廖雪峰大大贡献的教程写的不错,写了个爬虫把教程保存为word文件,供大家方便下载学习:http://p ...

  5. Python爬虫系列-BeautifulSoup详解

    安装 pip3 install beautifulsoup4 解析库 解析器 使用方法 优势 劣势 Python标准库 BeautifulSoup(markup,'html,parser') Pyth ...

  6. Python爬虫之BeautifulSoap的用法

    1. Beautiful Soup的简介 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据.官方解释如下: Beautiful Soup提供一些简单的.pyt ...

  7. Python爬虫之Beautifulsoup模块的使用

    一 Beautifulsoup模块介绍 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Be ...

  8. Python爬虫:BeautifulSoup用法总结

    原文 BeautifulSoup是一个解析HTML或XML文件的第三方库.HTML或XML文件可以用DOM模型解释.一般包含三种节点: 元素节点 - 通常指HTML 或 XML的标签 文本节点 - 标 ...

  9. Python 爬虫—— requests BeautifulSoup

    本文记录下用来爬虫主要使用的两个库.第一个是requests,用这个库能很方便的下载网页,不用标准库里面各种urllib:第二个BeautifulSoup用来解析网页,不然自己用正则的话很烦. req ...

随机推荐

  1. 常用模块一(random模块、time模块、sys模块)

    一.random模块 import random # 1 取随机小数 应用:数学计算 ret = random.random() # 大于0且小于1之间的小数 print(ret) # 0.53559 ...

  2. Android 开发之:Intent.createChooser() 妙用

    大家对该功能第一印象就是ApiDemo 里面的 其只有区区几行代码  提取为: Intent intent = new Intent(Intent.ACTION_GET_CONTENT); inten ...

  3. Python之简单函数练习(Day30)

    1.写函数,,用户传入修改的文件名,与要修改的内容,执行函数,完成批了修改操作 def modify_file(filename,old,new): import os with open(filen ...

  4. jQuery:自学笔记(3)——操作DOM

    jQuery:自学笔记(3)——操作DOM 修改元素的属性 获取元素属性 设置元素属性 修改元素的内容 说明 有三种方式可以获取HTML元素的内容,分别是 ☐ text():设置或返回所选元素的文本内 ...

  5. SourceTree的基本使用---基本介绍/本地开发

    转载自https://www.cnblogs.com/tian-xie/p/6264104.html 1. SourceTree是什么 拥有可视化界面的项目版本控制软件,适用于git项目管理 wind ...

  6. 详尽全面的matlab绘图教程

    Matlab绘图 强大的绘图功能是Matlab的特点之一,Matlab提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形,这类函数称为高层绘图函数.此外,M ...

  7. java PinYinUtils 拼音工具类

    package com.sicdt.library.core.utils; import java.util.HashSet; import java.util.Set; import net.sou ...

  8. INSPIRED启示录 读书笔记 - 第24章 平滑部署

    避免更新产品导致用户反感 毫无征兆地更新不必要的版本会令用户产生反感.不是所有用户都喜欢新版本的产品.用户产生反感主要有几个原因 1.事前没有收到更新通知,用户觉得措手不及 2.用户没时间学习.适应新 ...

  9. Android 开发人员必须掌握的 10 个开发工具

    Android 开发人员必须掌握的 10 个开发工具 Android SDK 本身包含很多帮助开发人员设计.开发.测试和发布 Android 应用的工具,在本文中,我们将讨论 10 个最常用的工具. ...

  10. how to use composer in fiddler

    https://www.cnblogs.com/youxin/p/3570310.html http://docs.telerik.com/fiddler/generate-traffic/tasks ...