Python爬虫之BeautifulSoup的用法
之前看静觅博客,关于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的用法的更多相关文章
- python爬虫---selenium库的用法
python爬虫---selenium库的用法 selenium是一个自动化测试工具,支持Firefox,Chrome等众多浏览器 在爬虫中的应用主要是用来解决JS渲染的问题. 1.使用前需要安装这个 ...
- 使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解(新手必学)
为大家介绍下Python爬虫库BeautifulSoup遍历文档树并对标签进行操作的详细方法与函数下面就是使用Python爬虫库BeautifulSoup对文档树进行遍历并对标签进行操作的实例,都是最 ...
- 【Python爬虫】BeautifulSoup网页解析库
BeautifulSoup 网页解析库 阅读目录 初识Beautiful Soup Beautiful Soup库的4种解析器 Beautiful Soup类的基本元素 基本使用 标签选择器 节点操作 ...
- Python爬虫——用BeautifulSoup、python-docx爬取廖雪峰大大的教程为word文档
版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com 廖雪峰大大贡献的教程写的不错,写了个爬虫把教程保存为word文件,供大家方便下载学习:http://p ...
- Python爬虫系列-BeautifulSoup详解
安装 pip3 install beautifulsoup4 解析库 解析器 使用方法 优势 劣势 Python标准库 BeautifulSoup(markup,'html,parser') Pyth ...
- Python爬虫之BeautifulSoap的用法
1. Beautiful Soup的简介 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据.官方解释如下: Beautiful Soup提供一些简单的.pyt ...
- Python爬虫之Beautifulsoup模块的使用
一 Beautifulsoup模块介绍 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Be ...
- Python爬虫:BeautifulSoup用法总结
原文 BeautifulSoup是一个解析HTML或XML文件的第三方库.HTML或XML文件可以用DOM模型解释.一般包含三种节点: 元素节点 - 通常指HTML 或 XML的标签 文本节点 - 标 ...
- Python 爬虫—— requests BeautifulSoup
本文记录下用来爬虫主要使用的两个库.第一个是requests,用这个库能很方便的下载网页,不用标准库里面各种urllib:第二个BeautifulSoup用来解析网页,不然自己用正则的话很烦. req ...
随机推荐
- Nuxt使用iconfont矢量图标
Nuxt可以使用各种前端UI框架,这些框架一般都自带的有一些icon图标可供用户使用,但是一般项目开发的时候,UI框架自带的icon是不能满足实际项目需求的,这个时候我们可以自己找一些图片放到本地项目 ...
- 三、Nuxt项目目录结构
使用IDE打开我们初始化完的新项目,然后发现目录如下图所示 现在来介绍一下每个目录和文件 .idea 是我使用的IDE是IDEA自动生成的,跟项目无关 .nuxt ...
- OpenCV3计算机视觉+Python(五)
人脸检测和识别 本章将介绍Haar级联分类器,通过对比分析相邻图像区域来判断给定图像或子图像与已知对象是否匹配.本章将考虑如何将多个Haar级联分类器构成一个层次结构,即一个分类器能识别整体区域(如人 ...
- 玩转git版本控制软件
一.git的基本介绍 1.什么是git? git是个开源的分布式版本控制软件,用以有效.高速的处理从很小到非常大的项目版本管理.说白了就是个版本控制软件 2.git的使用方法 git软件是通过命令来实 ...
- LeetCode:搜索二维矩阵【74】
LeetCode:搜索二维矩阵[74] 题目描述 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值.该矩阵具有如下特性: 每行中的整数从左到右按升序排列. 每行的第一个整数大于前一行的 ...
- 06 Spring框架 依赖注入(三)多配置文件
在Spring前几节的学习中我们都使用了一个配置文件,就像struts2中可以包含其他的配置文件,我们能不能使用多个配置文件呢(在工程比庞大,配置比较多的时候)? Spring多配置文件分为两种: 平 ...
- sudoers文件设置sudo命令无密码(root密码)登录
参考博客:http://xvshell.iteye.com/blog/1838093 1. 当用户执行sudo时,Linux系统会去寻找/etc/sudoers文件,并且这是主动的,判断用户是否有执行 ...
- linux环境vim升级到vim74
作为编辑器之神,vim7.4已经发布近两个月了.从vim7.3到vim7.4,时隔两年之久,做了多项改正和性能提升,作为Linux Geeksters的你,怎能错过. 由于各大主流linux操作系统都 ...
- 断点续传JAVA实现
支持H5 Video标签播放,迅雷下载 /** * 断点续传工具 * @author lxycx_xc * 时间:2017年11月30日 */ public class BreakpointResum ...
- VMware 连接不上XSHELL
本人创建虚拟机时把网络连接模式选成了桥接,后来在VMware虚拟网络编辑器中查看了连接模式:NAT. 重新回到VMware中更改了连接模式:NAT模式 成功连接XSHELL 步骤1 打开VMware的 ...