Python Requests库入门——应用实例-百度、360搜索关键词提交
转载自https://www.cnblogs.com/hanmk/p/8724162.html
学习爬虫,怎么也绕不开requests库和BeautifulSoup库,先说下BeautifulSoup库:
BeautifulSoup库通俗来说是【解析、遍历、维护“标签树”(例如html、xml等格式的数据对象)的功能库 】
一个简单的使用BeautifulSoup库的demo:

# coding:utf-8 from bs4 import BeautifulSoup
import requests url = 'http://python123.io/ws/demo.html'
r = requests.get(url)
demo = r.text # 服务器返回响应 soup = BeautifulSoup(demo, "html.parser")
"""
demo 表示被解析的html格式的内容
html.parser表示解析用的解析器
"""
print(soup) # 输出响应的html对象
print(soup.prettify()) # 使用prettify()格式化显示输出

得到一个BeautifulSoup对象后,一般通过BeautifulSoup类的基本元素来提取html中的内容

2.提取html中的信息
demo中的html内容如下:

(1)
print(soup.title) # 获取html的title标签的信息
print(soup.a) # 获取html的a标签的信息(soup.a默认获取第一个a标签,想获取全部就用for循环去遍历)
print(soup.a.name) # 获取a标签的名字
print(soup.a.parent.name) # a标签的父标签(上一级标签)的名字
print(soup.a.parent.parent.name) # a标签的父标签的父标签的名字

(2)
print('a标签类型是:', type(soup.a)) # 查看a标签的类型
print('第一个a标签的属性是:', soup.a.attrs) # 获取a标签的所有属性(注意到格式是字典)
print('a标签属性的类型是:', type(soup.a.attrs)) # 查看a标签属性的类型
print('a标签的class属性是:', soup.a.attrs['class']) # 因为是字典,通过字典的方式获取a标签的class属性
print('a标签的href属性是:', soup.a.attrs['href']) # 同样,通过字典的方式获取a标签的href属性

(3)
print('第一个a标签的内容是:', soup.a.string) # a标签的非属性字符串信息,表示尖括号之间的那部分字符串
print('a标签的非属性字符串的类型是:', type(soup.a.string)) # 查看标签string字符串的类型
print('第一个p标签的内容是:', soup.p.string) # p标签的字符串信息(注意p标签中还有个b标签,但是打印string时并未打印b标签,说明string类型是可跨越多个标签层次)

介绍一下find_all()方法:
常用通过find_all()方法来查找标签元素:<>.find_all(name, attrs, recursive, string, **kwargs) ,返回一个列表类型,存储查找的结果
• name:对标签名称的检索字符串
• attrs:对标签属性值的检索字符串,可标注属性检索
• recursive:是否对子孙全部检索,默认True
• string:<>…</>中字符串区域的检索字符串
(1)
print('所有a标签的内容:', soup.find_all('a')) # 使用find_all()方法通过标签名称查找a标签,返回的是一个列表类型
print('a标签和b标签的内容:', soup.find_all(['a', 'b'])) # 把a标签和b标签作为一个列表传递,可以一次找到a标签和b标签

(2)
for t in soup.find_all('a'): # for循环遍历所有a标签,并把返回列表中的内容赋给t
print('t的值是:', t) # link得到的是标签对象
print('t的类型是:', type(t))
print('a标签中的href属性是:', t.get('href')) # 获取a标签中的url链接

(3)
for i in soup.find_all(True): # 如果给出的标签名称是True,则找到所有标签
print('标签名称:', i.name) # 打印标签名称

(4)
print('href属性为http..的a标签元素是:', soup.find_all('a', href='http://www.icourse163.org/course/BIT-268001')) # 标注属性检索
print('class属性为title的标签元素是:', soup.find_all(class_='title')) # 指定属性,查找class属性为title的标签元素,注意因为class是python的关键字,所以这里需要加个下划线'_'
print('id属性为link1的标签元素是:', soup.find_all(id='link1')) # 查找id属性为link1的标签元素

(5)
print(soup.head) # head标签
print(soup.head.contents) # head标签的儿子标签,contents返回的是列表类型
print(soup.body.contents) # body标签的儿子标签
"""对于一个标签的儿子节点,不仅包括标签节点,也包括字符串节点,比如返回结果中的 \n"""

(6)
print(len(soup.body.contents)) # 获得body标签儿子节点的数量
print(soup.body.contents[1]) # 通过列表索引获取第一个节点的内容

(7)
print(type(soup.body.children)) # children返回的是一个迭代对象,只能通过for循环来使用,不能直接通过索引来读取其中的内容
for i in soup.body.children: # 通过for循环遍历body标签的儿子节点
print(i.name) # 打印节点的名字

Python Requests库入门——应用实例-百度、360搜索关键词提交的更多相关文章
- python requests库网页爬取小实例:百度/360搜索关键词提交
百度/360搜索关键词提交全代码: #百度/360搜索关键词提交import requestskeyword='Python'try: #百度关键字 # kv={'wd':keyword} #360关 ...
- Python Requests库入门——应用实例-京东商品页面爬取+模拟浏览器爬取信息
京东商品页面爬取 选择了一款荣耀手机的页面(给华为打广告了,荣耀play真心不错) import requests url = "https://item.jd.com/7479912.ht ...
- python requests库入门[转]
首先,确认一下: Requests 已安装 Requests是 最新的 让我们从一些简单的示例开始吧. 发送请求 使用Requests发送网络请求非常简单. 一开始要导入Requests模块: > ...
- Requests库入门——应用实例-网络图片的爬取与保存(好看的小姐姐≧▽≦)
在B站学习这一节的时候,弹幕最为激烈,不管大家是出于什么目的都想体验一下网络爬虫爬取图片的魅力,毕竟之前的实例实话说都是一些没有太大作用的信息. 好了,直接上代码: import requests i ...
- Python Requests库网络爬取全代码
#爬取京东商品全代码 import requestsurl = "http://item.jd.com/2967929.html"try: r = requests.get(url ...
- Python——Requests库的开发者接口
本文介绍 Python Requests 库的开发者接口,主要内容包括: 目录 一.主要接口 1. requests.request() 2. requests.head().get().post() ...
- Python:requests库、BeautifulSoup4库的基本使用(实现简单的网络爬虫)
Python:requests库.BeautifulSoup4库的基本使用(实现简单的网络爬虫) 一.requests库的基本使用 requests是python语言编写的简单易用的HTTP库,使用起 ...
- requests库入门-16-Session和Cookie
分类专栏: Python接口自动化测试之requests库入门 作者 | Anthony_tester ,300w+访问量博主,Oracle测试开发工程师. 地址 | https://blog.csd ...
- 大概看了一天python request源码。写下python requests库发送 get,post请求大概过程。
python requests库发送请求时,比如get请求,大概过程. 一.发起get请求过程:调用requests.get(url,**kwargs)-->request('get', url ...
随机推荐
- codeforces 979 C. Kuro and Walking Route
C. Kuro and Walking Route time limit per test 2 seconds memory limit per test 256 megabytes input st ...
- Python3中正则模块re.compile、re.match及re.search函数用法详解
Python3中正则模块re.compile.re.match及re.search函数用法 re模块 re.compile.re.match. re.search 正则匹配的时候,第一个字符是 r,表 ...
- 局域网内python socket实现windows与linux间简单的消息传送
有个需求,就是在windows上看见一篇介绍linux相关的文章,想在局域网内的另外一台linux电脑上尝试一下, 于是就需要把该网页链接发送给linux,不想一点一点敲链接,又苦于没有找到其它好的方 ...
- jquery里遍历普通数组和多维数组的方法及实例
jquery里遍历数组用的是$.each,下面站长给大家几个具体的实例: 实例1.遍历一个普通的一维数组: 1 2 3 4 5 6 7 8 <script> //声明数据有下面两种方式 / ...
- Docker集群部署SpringCloud应用
整体架构 docker环境准备 # linux下的安装,自行百度 # windows docker toolbox下载地址 https://download.docker.com/win/stable ...
- 面试:HashSet怎么判断重复
HashSet是基于HashMap实现的,元素的值存储在key上,value的值所有元素都一样,都是这个 private static final Object PRESENT = new Objec ...
- GUN交叉工具链各模块的作用
名称 归属 作用 arm-linux-as binutils 编译ARM 汇编程序 arm ...
- Circos Ubuntu 安装
下载: http://www.circos.ca/software/download/circos/ Perl 需要5.8及以上的版本. 查看版本的命令: perl -v 解压安装包 安装包是一 ...
- 20155323 2016-2017-2 《Java程序设计》第2周学习总结
20155323 2016-2017-2 <Java程序设计>第2周学习总结 教材学习内容总结 对象:对象是类的一个实例,有状态和行为. 类:类是一个模板,它描述一类对象的行为和状态. 第 ...
- 20155328 2016-2017-2 《Java程序设计》第二周学习总结
20155328 2006-2007-2 <Java程序设计>第2周学习总结 教材学习内容总结 基本类型: 整数:short整数(占2字节).int整数(占4字节).long整数(占8字节 ...