Python基本操作

目录

前言

一、 BeautifulSoup 操作

标签属性处理

1. 判断 tag 标签是否包含 某个 属性

 2.BeautifulSoup 去除指定的html样式属性  -  清除标签属性

二、selenium 操作

1.滚动

三、功能 

1.下载

2.Python查看当前文件所在目录

3.引用模块

4.html代码进行压缩

三、requests

1.requests处理post的三种参数格式

总结


参考右边的帮助文档

前言

提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考



一、 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代码进行压缩

htmlminhtml_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有三种数据格式,处理方式如下:

1.1、application/json

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提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oh LAN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值