目录
2.BeautifulSoup 去除指定的html样式属性 - 清除标签属性
参考右边的帮助文档
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、 BeautifulSoup 操作
标签属性处理
1. 判断 tag 标签是否包含 某个 属性
提示:in item.attrs 对象在 左边和右边是有区别的,在左匹配字符串,在右匹配数组
from bs4 import BeautifulSoup
str = "<tr>……</tr>\n<tr>……</tr>\n<tr>……</tr>\n<tr class='xxx'>……</tr>\n<tr>……</tr>\n<tr>……</tr>"
soup = BeautifulSoup(str, 'lxml')
select = soup.select("tr")
for item in select:
if 'class'in item.attrs:
print(item)
2.BeautifulSoup 去除指定的html样式属性 - 清除标签属性
'''
blacklist 黑名单 属性
#去除指定的css属性
'''
def remove_attrs(soup, blacklist=["align", "style"]):
for tag in soup.findAll(True):
for attr in [attr for attr in tag.attrs if attr in blacklist]:
del tag[attr]
return soup
'''
whitelist 白名单 属性
#去除指定的css属性(白名单除外)
'''
def remove_attrs_whitelist(soup, whitelist=["colspan", "rowspan"]):
for tag in soup.findAll(True):
for attr in [attr for attr in tag.attrs if attr not in whitelist]:
del tag[attr]
return soup
'''
内部style属性 赋空字符串
去除所有样式
'''
def clean_soup(content):
for tags in content.findAll(True):
if 'style' in tags.attrs:
tags.attrs['style'] = ""
return content
'''
清除内部style属性
content : 标签对象
filter_style : 要过滤的样式
'''
def clean_soup_filter_tab(content, filter_style):
for tags in content.findAll(True):
if 'style' in tags.attrs:
if tags.attrs['style'] != filter_style:
tags.attrs['style'] = ""
return content
'''
清除全局style标签
BeautifulSoup:全局去除标签
列如:去除soup里面的script和style标签
'''
def extract_tag(bf,tag):
[s.extract() for s in bf(tag)]
二、selenium 操作
1.滚动
'''
滚动到浏览器最顶部
'''
def handle_scroll_top(driver):
driver.execute_script("var q=document.documentElement.scrollTop=0")
'''
temp_height: 当前的滚动的高度
is_scroll:是否滚动到底部
'''
def handle_scroll(driver, temp_height):
# ******************************* 循环将滚动条下拉 ***************************
driver.execute_script("window.scrollBy(0,1000)")
# sleep一下让滚动条反应一下
time.sleep(3)
driver.implicitly_wait(10)
# 获取当前滚动条距离顶部的距离
check_height = driver.execute_script(
"return document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;")
driver.implicitly_wait(10)
# 如果两者相等说明到底了
if check_height == temp_height:
return {temp_height: check_height, "is_scroll": True}
temp_height = check_height
return {'temp_height': check_height, "is_scroll": False}
三、功能
1.下载
'''
下载页面进行爬虫
'''
def parse_html(href):
response_1 = requests.get(href, headers=settings.headers)
response_1.encoding = 'utf-8'
f1 = open('steve_jobs2.html', 'w', encoding='utf-8')
f1.write(response_1.text)
# print(response_1.text)
return response_1.text
'''
拼接下载 文件 标签
'''
def joint_download_file(bf, file_name, download_url):
tab = '<div id="download"><table border="0" cellspacing="1" ><tr><td class="bid_attachtab_content">附件下载:<a href="{}" title="点击下载">{}</a><br></td></tr></table></div>'
bfb = BeautifulSoup(tab.format(download_url, file_name), 'html.parser')
# new_tag = bf.new_tag(tab)
bf.append(bfb)
return bf.prettify()
# new_tag = bf.new_tag("a", href="http://www.example.com")
# print(bf.find('div').append(new_tag))
2.Python查看当前文件所在目录
import os
print(os.path.dirname(os.path.abspath(__file__)))
3.引用模块
sys.path 是一个列表 list ,它里面包含了 已经添加到系统的环境变量 路径。
当我们要添加自己的引用模块搜索目录时,可以通过列表 list 的 append()方法;
sys.path.append()
对于需要引用的模块和需要执行的脚本文件不在同一个目录时,
sys.path默认在当前编辑目录,可以按照如下形式来添加路径:
import sys
sys.path.append(’需要引用模块的地址')
# sys.path.append(..) # 这代表添加当前路径的上一级目录
4.html代码进行压缩
htmlmin和html_slimmer是一些用于python的简单html缩小工具。我有数以百万计的html页面存储在我的数据库中,运行htmlmin,我可以将页面大小减少5到50%。这两种方法都不能在完全缩小html时达到最佳效果(即字体颜色可以减少到000),但这是一个好的开始。我有一个try/except块,它运行htmlmin,如果失败,htmlmin会更瘦,因为htmlmin似乎提供了更好的压缩,但它不支持非ascii字符。
import htmlmin
from slimmer import html_slimmer # or xhtml_slimmer, css_slimmer
try:
# html代码进行压缩
html=htmlmin.minify(html, remove_comments=True, remove_empty_space=True)
except:
html=html_slimmer( html.strip().replace('\n',' ').replace('\t',' ').replace('\r',' ') )
三、requests
1.requests处理post的三种参数格式
HTTP post请求中,body有三种数据格式,处理方式如下:
import requests,json
url = 'http://www.test.com/login'
data = {'user':'Tom','password':'123456'}
jsondata=json.dumps(data)
r =requests.post(url,jsondata)
print(r)
print(r.text)
print(r.content)
1.2、application/x-www-form-urlencoded:浏览器原生表单
import requests,json
url = 'http://www.test.com/login'
data = {'user':'Tom','password':'123456'}
r =requests.post(url,data)
print(r)
print(r.text)
print(r.content)
1.3、multipart/form-data:表单格式,可以上传文件
import requests,json
url= 'http://www.test.com/upload'
files = {'file':open('E://test.txt','rb')}
r = requests.post(url,files=files)
print(r)
print(r.text)
print(r.content)
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。