bs4库学习
# -*- coding:utf-8 -*-
import bs4
import requests def tags_val(tag, key='', index=0):
'''
tag指HTML元素,如:<a href="http://meilizhichengwk027.fang.com/chengjiao/-p11-t12/" class="" id="rent">出租</a>,
通过bs4的select获取元素,tag = bs4.BeautifulSoup(response.text,'html.parser');
key指元素的属性,如:key='id';
index指元素序号,如果tag有多个相同的,通过序号获取精确的其中一个;
最终返回元素属性指,如id的值为rent。或key不传入参,返回tag文本,如'出租'
'''
if len(tag) == 0 or len(tag) <= index:
return ''
elif key:
txt = tag[index].get(key)
return txt.strip(' \t\r\n') if txt else ''
else:
txt = tag[index].text
return txt.strip(' \t\r\n') if txt else '' def tag_val(tag, key=''):
'''
与tags_val用法类似,但是不传index,也就是要能通过selector获取到唯一的元素,然后通过key返回元素属性值或文本
'''
if tag is None:
return ''
elif key:
txt = tag.get(key)
return txt.strip(' \t\r\n') if txt else ''
else:
txt = tag.text
return txt.strip(' \t\r\n') if txt else '' #使用requests.Session(),能够保存每次返回的cookie,让下次发送请求时带上保存的cookie
session = requests.Session()
response = session.get('http://meilizhichengwk027.fang.com/chengjiao/')
html = bs4.BeautifulSoup(response.text,'html.parser')
# 当时用 html.select('.dealSent.sentwrap tr:nth-child(2) p:nth-child(1)')时,会报错,不支持此用法,但是在chrome的console是可以获取到元素的
tags = html.select('.dealSent.sentwrap tr:nth-of-type(2) p:nth-of-type(1)')
print tags
print tags_val(tags)
结果:
[<p><b><a href="http://esf.wuhan.fang.com/chengjiao/433513_1.htm" target="_blank">1\u5ba41\u5385</a></b></p>]
1室1厅
bs4库学习的更多相关文章
- 《爬虫学习》(四)(使用lxml,bs4库以及正则表达式解析数据)
1.XPath: XPath(XML Path Language)是一门在XML和HTML文档中查找信息的语言,可用来在XML和HTML文档中对元素和属性进行遍历. 工具:扩展商店里搜索:XPath ...
- python_库学习_01
一.python的库学习之 财经数据接口包 1.安装ThShare 直接pip install tushare 可能会出现缺少依赖库的情况,依次安装,大概有lxml,pandas,bs4,reques ...
- Python 每日提醒写博客小程序,使用pywin32、bs4库
死循环延迟调用方法,使用bs4库检索博客首页文章的日期是否与今天日期匹配,不匹配则说明今天没写文章,调用pywin32库进行弹窗提醒我写博客.
- python 操作exls学习之路1-openpyxl库学习
这篇要讲到的就是如何利用Python与openpyxl结合来处理xlsx表格数据.Python处理表格的库有很多,这里的openpyxl就是其中之一,但是它是处理excel2007/2010的格式,也 ...
- dlib库学习之一
dlib库学习之一 1.介绍 跨平台 C++ 通用库 Dlib 发布 ,带来了一些新特性,包括概率 CKY 解析器,使用批量同步并行计算模型来创建应用的工具,新增两个聚合算法:中国低语 (Chines ...
- numpy, matplotlib库学习笔记
Numpy库学习笔记: 1.array() 创建数组或者转化数组 例如,把列表转化为数组 >>>Np.array([1,2,3,4,5]) Array([1,2,3,4,5]) ...
- python爬虫解析库学习
一.xpath库使用: 1.基本规则: 2.将文件转为HTML对象: html = etree.parse('./test.html', etree.HTMLParser()) result = et ...
- 【mmall】Guava库学习Collections
参考链接 Guava库学习:学习Collections(三)Sets
- muduo网络库学习笔记(五) 链接器Connector与监听器Acceptor
目录 muduo网络库学习笔记(五) 链接器Connector与监听器Acceptor Connector 系统函数connect 处理非阻塞connect的步骤: Connetor时序图 Accep ...
随机推荐
- mui框架中dialog框的实现
<script type="text/javascript" charset="utf-8"> //mui初始化 mui.init({ swipeB ...
- 两个div不同高度并排显示
在HTML中让两个div并排显示,通常情况下有三种实现方式,包括: (1)设置为行内样式,display:inline-block (2)设置float浮动 (3)设置position定位属性为abs ...
- MySQL学习12 - pymysql模块的使用
一.pymysql的下载和使用 1.pymysql模块的下载 2.pymysql的使用 二.execute()之sql注入 三.增.删.改:conn.commit() 四.查:fetchone.fet ...
- IDEA中 GIT与SVN版本控制插件的切换
https://www.cnblogs.com/yccmelody/p/7794220.html
- 常用数据库:MongoDB
下载地址:https://www.mongodb.com/download-center/community 安装及配置指南:https://docs.mongodb.com/manual/insta ...
- Mac环境下Scrapy的安装
直接命令安装: $ easy_install scrapy 从 GitHub 安装: $ git clonehttps://github.com/scrapy/scrapy.git $ cd scra ...
- osgearth介绍
osgEarth为开发osg应用提供了一个地理空间SDK和地形引擎. osgEarth的目标: l 提供基于osg开发3D地理空间应用的支持; l 直接从数据源可视化地形模型和影像变得更加简单: l ...
- Revit二次开发封装族的替代方法
使用草图平面:
- EntityFramework6之原生SQL
原文:https://www.cnblogs.com/wujingtao/p/5412329.html 用EF执行SQL又比ADO.NET方便,特别是在执行查询语句的时候,EF会把查询到的数据自动保存 ...
- Date——js 获取当前日期到之后一个月30天的日期区间
var dateList = []; let startDate = new Date(); let endDate = new Date(); endDate.setDate(startDate.g ...