python-自动化运维、办公、爬虫和娱乐

python-自动化运维、办公、爬虫和娱乐

作为一个会一些基本的办公自动化技术的老人,我想告诉大家一件最重要的事情:
你可以学办公自动化,可以学vba,Python,JavaScript,学各种东西都行,但千万记住一点:不要暴露自己的实力。
不要暴露自己的实力。不要暴露自己的实力!
你可以一次合并2000个表格,但不要告诉别人这是你半个小时之内完成的。
要表现出自己是忙了一天才干完这几个项目的样子。
有些活你可以说是熬通宵干完的。
这样单位才知道你的价值。
不然你总是十分钟搞定8000张图片,你的老板就会以为处理8000张图片只需要十分钟,然后他就会问你这一整天其他时候你在干嘛。
你学会了办公自动化以后,会发现其实很多时候写程序的过程占不了多长时间,大部分时间都被洗数据所占据了。所以一定要足够低调,给自己预留足够多的时间,要反复强调这些工作的难度。
不然,你会的越多。老板派给你的活越多,而且他还不给你加工资。

一、作用
Python是数据处理常用工具,可以处理数量级从几K至几T不等的数据,具有较高的开发效率和可维护性,还具有较强的通用性和跨平台性。Python可用于数据分析,但其单纯依赖Python本身自带的库进行数据分析还是具有一定的局限性的,需要安装第三方扩展库来增强分析和挖掘能力。
二、使用
传送门——>>用三种办法告诉你Python如何安装第三方库
三、常用库介绍
1、requests
Python 爬虫时,最先接触的第三方库就是 requests:CSDN介绍


Python办公自动化主要是批量化、自动化、定制化解决数据问题,目前主要分为三大块:自动化office、自动化机器人、自动化数据服务。
1、自动化office,包括对excel、word、ppt、email、pdf等常用办公场景的操作,
python都有对应的工具库,可以很方便的调用。
提供一些常见的核心库供大家参考使用。
excel:xlwings、xlrd、xlwt、openpyxl
word:Python-docx
ppt:pptx
email:smtplib(SMTP服务)、email(解析处理)、yagmail(全能)
pdf:pypdf2、pdfminer、pdfplumber
picture:PIL
学这些会撸python是前提,对于小白来说自学也不是件容易的事,需要花相当的时间去适应python的语法逻辑,而且要坚持亲手敲代码,不断练习。
2、自动化机器人,用来提高常规且高频的服务,比如微信客服、自动交易系统、实时信息抓取、QQ聊天机器人等。
例如
web自动化测试:selenium
模拟鼠标键盘:pymouse、pywinauto、pyautogui
微信自动化:wechatby
Python自动化办公其实并不难,但也需要有Python基础,起码得会写脚本,不然尽管有自动化接口也用不了。
很多人入了很长时间门,还是在门外徘徊,我觉得这是学习方法的问题。学习编程一定要多练习,基础+实战同步走,这样才能最快掌握Python。
可能你会问,看书看不进去怎么办,那就换条路子,你可以去看视频、看网络教程、逛github,都是很不错的方法.
3、自动化数据服务,主要是提供流式数据服务,从数据获取、数据处理、数据建模、数据可视化,到最终生成数据报告,通过python搭建起完整数据链条。
数据抓取:requests、scrapy
数据处理:pandas、numpy
数据建模:scipy、scikit-learn、statesmodel、keras
数据可视化:matplotlib、seaborn、bokeh、pyecharts
数据报表:dash
自动化办公小例子,可以模仿:https://segmentfault.com/a/1190000041139676

一、运维

网络方面运维

有个想法,按照网络日常运维,结合python实现自动化,思路如下:
网络连通性测试ping,ping不通后,进行python抓包分析。

网络连通性测试

先了解学习ping原理:点我进行学习
制作多个地址ping测小工具:点我进行学习点我进行看视频

抓包

python抓包(sniff)-----实现wireshark抓包功能

抓包与解包

python 抓包与解包

定时启动python

windows系统的“计划任务”+脚本
在Windows中,.bat文件是批处理文件,是与Linux中.sh(shell)文件很像的东西。

@echo off
d:
cd py.文件路径
start 名字.py
pause

或者

cd C:\Users\Season\Desktop\
python timer.py

自动发消息给钉钉

  1. 案例借鉴:传送门——>>PYTHON 使用钉钉机器人发送消息至钉钉
  2. 可执行代码如下(前提需要安装对应的第三方库,具体方面见“库”章节或者根据报错进行百度)
import time
import hmac
import hashlib
import base64
import json
import urllib.parse
import urllib.request


class DingDingWebHook(object):
    def __init__(self, secret=None, url=None):
        """
        :param secret: 安全设置的加签秘钥
        :param url: 机器人没有加签的WebHook_url
        """
        if secret is not None:
            secret = secret
        else:
            secret = 'SECab99f8c18f510bf3b7f86c2dbxx'  # 加签秘钥
        if url is not None:
            url = url
        else:
            url = "https://oapi.dingtalk.com/robot/send?access_token=f7b625dccf9b6d34083ef3d0b5bbd7850b959abcbb816c986c0d86490262a95b"  # 无加密的url

        timestamp = round(time.time() * 1000)  # 时间戳
        secret_enc = secret.encode('utf-8')
        string_to_sign = '{}\n{}'.format(timestamp, secret)
        string_to_sign_enc = string_to_sign.encode('utf-8')
        hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
        sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))  # 最终签名

        self.webhook_url = url + '&timestamp={}&sign={}'.format(timestamp, sign)  # 最终url,url+时间戳+签名

    def send_meassage(self, data):
        """
        发送消息至机器人对应的群
        :param data: 发送的内容
        :return:
        """
        header = {
            "Content-Type": "application/json",
            "Charset": "UTF-8"
        }
        send_data = json.dumps(data)  # 将字典类型数据转化为json格式
        send_data = send_data.encode("utf-8")  # 编码为UTF-8格式
        request = urllib.request.Request(url=self.webhook_url, data=send_data, headers=header)  # 发送请求

        opener = urllib.request.urlopen(request)  # 将请求发回的数据构建成为文件格式
        print(opener.read())  # 打印返回的结果


if __name__ == '__main__':
    my_secret = 'SECab99f8c18f510bf3b7f86c2db7243d5cd802xxc7b118094db845398c8b'
    my_url = 'https://oapi.dingtalk.com/robot/send?access_token=f7b625dccf9b6d34083ef3d0b5bbd7850b959abcbb816c986c0d86490262a95b'
    my_data = \
        {
        "msgtype": "text",
        "text": {
            "content": "通知,我就是我, 是不一样的烟火@156xxxx8827" #要向钉钉发送的文字,注意需包含钉钉的关键字
        },
        "at": {
            "atMobiles": [18688889999],
            "isAtAll": False
        }  # 是否@所有人
    }

    dingding = DingDingWebHook(secret=my_secret, url=my_url)
    dingding.send_meassage(my_data)

异常情况:
在这里插入图片描述
解决方法:提示关键字不匹配,增加发送信息中钉钉设置的关键字“通知”
在这里插入图片描述
在这里插入图片描述

自动打开指定软件

import os
def open_app(app_dir):
  os.startfile(app_dir)
if __name__ == "__main__":
  app_dir = r'C:\Program Files (x86)\DingDing\DingtalkLauncher.exe'   #实际要打开软件的真实路径
  open_app(app_dir)

指定【微信】好友自动发送消息

  1. 安装依赖库pyautogui和pyperclip
pip3 install pyautogui -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
pip3 install pyperclip -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
pip3 install opencv-python -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
  1. 源码
#打开微信,自动给某人发送固定信息
import pyautogui
import pyperclip
import time

def get_msg():
    contents = "加油 努力 前进"             #"想发的消息,每条消息空格分开"
    return contents.split(" ")

def send(msg):
    pyperclip.copy(msg)                   # 复制需要发送的内容到粘贴板
    pyautogui.hotkey('ctrl', 'v')         # 模拟键盘 ctrl + v 粘贴内容
    pyautogui.press('enter')              # 发送消息

def send_msg(friend):
    pyautogui.hotkey('ctrl', 'alt', 'w')  # Ctrl + alt + w 打开微信
    pyautogui.hotkey('ctrl', 'f')         # 搜索好友
    pyperclip.copy(friend)                # 复制好友昵称到粘贴板
    pyautogui.hotkey('ctrl', 'v')         # 模拟键盘 ctrl + v 粘贴
    time.sleep(1)
    pyautogui.press('enter')              # 回车进入好友消息界面
    for msg in get_msg():                 # 一条一条发送消息
        send(msg)
        time.sleep(2)                     # 每条消息间隔 2 秒

if __name__ == '__main__':
    friend_name = "文件传输助手"            #好友名称
    send_msg(friend_name)

指定【钉钉】好友自动发送消息

#打开钉钉,自动给某人发送固定信息
import pyautogui
import pyperclip
import time

def get_msg():
    contents = "记得12点前检查作业"             #"想发的消息,每条消息空格分开"
    return contents.split(" ")

def send(msg):
    pyperclip.copy(msg)                   # 复制需要发送的内容到粘贴板
    pyautogui.hotkey('ctrl', 'v')         # 模拟键盘 ctrl + v 粘贴内容
    pyautogui.press('enter')              # 发送消息

def send_msg(friend):
    pyautogui.hotkey('ctrl', 'shift', 'D')  # Ctrl + alt + w 打开微信
    pyautogui.hotkey('ctrl', 'shift', 'f')         # 搜索好友
    pyperclip.copy(friend)                # 复制好友昵称到粘贴板
    pyautogui.hotkey('ctrl', 'v')         # 模拟键盘 ctrl + v 粘贴
    time.sleep(1)
    pyautogui.press('enter')              # 回车进入好友消息界面
    for msg in get_msg():                 # 一条一条发送消息
        send(msg)
        time.sleep(2)                     # 每条消息间隔 2 秒

if __name__ == '__main__':
    friend_name = "我(fo安方)"            #好友名称
    send_msg(friend_name)


Python通过url获取数据

import requests

#通过url获取数据
def get_page(url):
    #requests.get 自带 json.load
    page = requests.get(url)
    page = page.content
    #将bytes转换成字符串
    page = page.decode('utf-8')
    return  page

print(get_page('https://www.duitang.com/napi/blog/list/by_search/?kw=%E6%A0%A1%E8%8A%B1&start=0&limit=1000'))


python读取网页上的数据

借鉴学习链接编写python代码实现打开并登录网页、对网页进行点击、输入信息等操作

import pandas as pd
url = "https://nba.hupu.com/standings"
res = pd.read_html(url)
print(res)

执行结果如下:
C:\Users\qq\AppData\Local\Programs\Python\Python38\python.exe C:/Users/qq/Desktop/1111111111111.py
[    0     1   2   3      4     5   ...    8      9      10     11    12    13
0   东部    东部  东部  东部     东部    东部  ...    东部     东部     东部     东部    东部    东部
1   排名    队名   胜   负     胜率   胜场差  ...    赛区     东部     得分     失分    净胜  连胜/2    1    热火  53  29  64.6%   0.0  ...  13-3  35-17  110.0  105.6   4.5   1连败
3    2  凯尔特人  51  31  62.2%   2.0  ...   9-7  33-19  111.8  104.5   7.3   1连胜
4    3    雄鹿  51  31  62.2%   2.0  ...  12-4  33-19  115.5  112.1   3.4   1连败
5    4   7651  31  62.2%   2.0  ...  6-10  32-20  109.9  107.3   2.6   2连胜
6    5    猛龙  48  34  58.5%   5.0  ...  10-6  30-22  109.4  107.1   2.3   1连败
7    6    公牛  46  36  56.1%   7.0  ...  10-6  29-23  111.6  112.0  -0.4   1连胜
8    7    篮网  44  38  53.7%   9.0  ...  10-6  31-21  112.9  112.1   0.8   4连胜
9    8    老鹰  43  39  52.4%  10.0  ...   9-7  26-26  113.9  112.4   1.6   1连胜
10   9    骑士  44  38  53.7%   9.0  ...  10-6  27-25  107.8  105.7   2.1   1连胜
11  10    黄蜂  43  39  52.4%  10.0  ...   8-8  27-25  115.3  114.9   0.4   3连胜
12  11   尼克斯  37  45  45.1%  16.0  ...  5-11  22-30  106.5  106.6  -0.1   2连胜
13  12    奇才  35  47  42.7%  18.0  ...   7-9  24-28  108.6  112.0  -3.4   3连败
14  13   步行者  25  57  30.5%  28.0  ...  2-14  11-41  111.5  114.9  -3.5  10连败
15  14    活塞  23  59  28.0%  30.0  ...  6-10  18-34  104.8  112.6  -7.7   3连败
16  15    魔术  22  60  26.8%  31.0  ...  3-13  12-40  104.2  112.2  -8.0   1连胜
17  西部    西部  西部  西部     西部    西部  ...    西部     西部     西部     西部    西部    西部
18  排名    队名   胜   负     胜率   胜场差  ...    赛区     西部     得分     失分    净胜  连胜/19   1    太阳  64  18  78.0%   0.0  ...  10-6  39-13  114.8  107.3   7.5   1连败
20   2    灰熊  56  26  68.3%   8.0  ...  11-5  36-16  115.6  109.9   5.7   1连败
21   3    勇士  53  29  64.6%  11.0  ...  12-4  33-19  111.0  105.5   5.5   5连胜
22   4   独行侠  52  30  63.4%  12.0  ...  14-2  36-16  108.0  104.7   3.3   4连胜
23   5    爵士  49  33  59.8%  15.0  ...  15-1  33-19  113.6  107.6   6.0   1连胜
24   6    掘金  48  34  58.5%  16.0  ...  6-10  29-23  112.7  110.4   2.3   1连败
25   7   森林狼  46  36  56.1%  18.0  ...  12-4  32-20  115.9  113.3   2.6   1连败
26   8    鹈鹕  36  46  43.9%  28.0  ...  6-10  25-27  109.3  110.3  -1.0   2连败
27   9    快船  42  40  51.2%  22.0  ...   9-7  26-26  108.4  108.4   0.0   5连胜
28  10    马刺  34  48  41.5%  30.0  ...  6-10  24-28  113.2  113.0   0.1   3连败
29  11    湖人  33  49  40.2%  31.0  ...  3-13  18-34  112.1  115.2  -3.1   2连胜
30  12    国王  30  52  36.6%  34.0  ...  6-10  20-32  110.3  115.8  -5.5   1连胜
31  13   开拓者  27  55  32.9%  37.0  ...  1-15  11-41  106.2  115.1  -8.9  11连败
32  14    雷霆  24  58  29.3%  40.0  ...  6-10  17-35  103.7  111.8  -8.1   3连败
33  15    火箭  20  62  24.4%  44.0  ...  3-13  11-41  109.7  118.2  -8.5   7连败

[34 rows x 14 columns]]

Process finished with exit code 0

自动打开网址和输入账号密码

#引入selenium库中的 webdriver 模块
from selenium import webdriver
#引入time库
import time
from selenium.webdriver.common.keys import Keys
import os
# 加启动配置
option = webdriver.ChromeOptions()
option.add_argument('headless')


#打开谷歌浏览器
#driver = webdriver.Chrome()
chrome_options = webdriver.ChromeOptions()
driver = webdriver.Chrome(options=chrome_options)
#利用add_experimental_option函数,传入一个名为“excludeSwitches”的选项,取消“chrome 正在受到自动软件的控制”
chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])
chromeOptions = webdriver.ChromeOptions()



#打开智慧树学习平台
driver.get('https://passport.csdn.net/login?code=applets')
'''
考虑到网页打开的速度取决于每个人的电脑和网速,
使用time库sleep()方法,让程序睡眠5秒
'''
time.sleep(5)
#在主页面点击登录按钮,进入登录页面
driver.find_element_by_xpath('/html/body/div[2]/div/div[2]/div[2]/div[1]/div/div[1]/span[4]').click()
#输入账号和密码
driver.find_element_by_xpath('/html/body/div[2]/div/div[2]/div[2]/div[1]/div/div[2]/div/div[1]/div/input').send_keys('18826227807')
driver.find_element_by_xpath('/html/body/div[2]/div/div[2]/div[2]/div[1]/div/div[2]/div/div[2]/div/input').send_keys('a2509186734')
#点击登录按钮
driver.find_element_by_xpath('/html/body/div[2]/div/div[2]/div[2]/div[1]/div/div[2]/div/div[4]/button').click()

二、办公

识别并读取PDF中的文字

window系统,cmd输入pip install pdfminer3k

# pip install pdfminer3k  #pdfminer库:pdf的库
from io import StringIO   #io:操作系统库
from pdfminer.pdfinterp import PDFResourceManager,process_pdf
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams

# 打开pdf文件
pdf_file = open('静夜思.pdf', 'rb')

########默认操作#######(读pdf必要代码)
rsrcmgr = PDFResourceManager()
retstr = StringIO()
laparams = LAParams()
device = TextConverter(rsrcmgr=rsrcmgr,outfp=retstr,laparams=laparams)
process_pdf(rsrcmgr=rsrcmgr,device=device,fp=pdf_file)
device.close()
content = retstr.getvalue()
retstr.close()
pdf_file.close()
########默认操作#######

print(content)

入门级Excel自动化办公案例

读取excel

使用的库:
xlrd库:可以对xlsx、xls、xlsm文件进行读操作且效率高
直接在命令行或者终端中使用pip安装:pip install xlrd

import xlrd  #先导入模块而后使用

xlsx = xlrd.open_workbook('7月下旬入库表.xlsx') #open_workbook()函数来读取指定的一个工作簿对象。这里的参数name是Excel文件的名字,一般使用的是相对路径的名字

sheet = xlsx.sheet_by_index(0)
# 通过sheet名查找:xlsx.sheet_by_name("7月下旬入库表")
# 通过索引查找:xlsx.sheet_by_index(3)
# print(table.cell_value(0, 0))

# 读取excel单元格
# print(sheet.cell_value(1, 2))  #读取excel中的第1行,第2列“陕西”,执行结果输出:陕西
# print(sheet.cell(0, 0).value)
# print(sheet.row(0)[0].value)


# for i in range(0, xlsx.nsheets):
#     sheet = xlsx.sheet_by_index(i)
#     print(sheet.name)
    # print(sheet.cell_value(0, 0))
#
# # 获取所有sheet名字:xlsx.sheet_names()
# # 获取sheet数量:xlsx.nsheets
#
for i in xlsx.sheet_names():      #读取excel的sheet表名称
    print(i)
    # table = xlsx.sheet_by_name(i)
    # print(table.cell_value(3, 3))
    
执行结果如下:
7月下旬入库表
test


#报错解决方法:
#python安装了xlrd,但是执行book = xlrd.open_workbook(‘haha.xlsx’)总是报错,提示不支持此文件,此时应该是 xlrd版本过高,只支持.xls文件,此时应该先卸载原来安装的 xlrd,再重新安装 旧版的 xlrd,执行命令如下:
#pip uninstall xlrd
#pip install xlrd==1.2.0
写入

使用的库:
xlwt:主要对xls文件进行写操作且效率高,但是不能执行xlsx文件
直接在命令行或者终端中使用pip安装:pip install xlwt

import xlwt
# 新建工作簿
new_workbook = xlwt.Workbook()
# 新建sheet
worksheet = new_workbook.add_sheet('new_test')
# 新建单元格,并写入内容
worksheet.write(0, 0, 'test')
# 保存
new_workbook.save('test.xls')

用Python设置Excel的格式

from xlutils.copy import copy
import xlrd
import xlwt

tem_excel = xlrd.open_workbook('日统计.xls', formatting_info=True) #打开工作簿
tem_sheet = tem_excel.sheet_by_index(0)  #打开excel的sheet表

new_excel = copy(tem_excel)   #复制excel
new_sheet = new_excel.get_sheet(0)

style = xlwt.XFStyle()

# 字体
font = xlwt.Font()
font.name = '微软雅黑'
font.bold = True
# 18*20
font.height = 360
style.font = font

# 边框:细线==THIN
borders = xlwt.Borders()
borders.top = xlwt.Borders.THIN
borders.bottom = xlwt.Borders.THIN
borders.left = xlwt.Borders.THIN
borders.right = xlwt.Borders.THIN
style.borders = borders

# 对齐
alignment = xlwt.Alignment()
alignment.horz = xlwt.Alignment.HORZ_CENTER
alignment.vert = xlwt.Alignment.VERT_CENTER
style.alignment = alignment


new_sheet.write(2, 1, 12)
new_sheet.write(3, 1, 18)
new_sheet.write(4, 1, 19)
new_sheet.write(5, 1, 15)


# new_sheet.write(2, 1, 12, style)
# new_sheet.write(3, 1, 18, style)
# new_sheet.write(4, 1, 19, style)
# new_sheet.write(5, 1, 15, style)

new_excel.save('填写.xls')

Excel_案例_统计每位同学总分

import xlrd
import xlwt

# 读取excel文件
xlsx = xlrd.open_workbook('三年二班(各科成绩单).xls')
# 选择指定sheet
sheet = xlsx.sheet_by_index(0)
# 依次单元格数据,并统计总分
all_data = []
# 统计共有多少学生,并去重
num_set = set()
for row_i in range(1, sheet.nrows):
    num = sheet.cell_value(row_i, 0)
    name = sheet.cell_value(row_i, 1)
    grade = sheet.cell_value(row_i, 3)

    student = {
        'num': num,
        'name': name,
        'grade': grade,
    }
    all_data.append(student)
    num_set.add(num)
# print(all_data)
# print(len(all_data))
# print(len(num_set))

# 计算总分
sum_list = []
for num in num_set:
    name = ''
    sum = 0
    for student in all_data:
        # print(student['num'])
        # print(num)
        if num == student['num']:
            sum += student['grade']
            name = student['name']
    sum_stu = {
        'num': num,
        'name': name,
        'sum': sum
    }
    sum_list.append(sum_stu)
print(sum_list)

# 写入新的excel

# 新建工作簿
new_workbook = xlwt.Workbook()
# 新建sheet
worksheet = new_workbook.add_sheet('2班')
# 新建单元格,并写入内容
# 写入第一列的内容
worksheet.write(0, 0, '学号')
worksheet.write(0, 1, '姓名')
worksheet.write(0, 2, '总分')
# 自动写入后面的内容
for row in range(0,len(sum_list)):
    worksheet.write(row+1,0,sum_list[row]['num'])
    worksheet.write(row+1,1,sum_list[row]['name'])
    worksheet.write(row+1,2,sum_list[row]['sum'])
# 保存
new_workbook.save('2班学生总分.xls')

Excel_更灵活的操作方式_xlsxwriter_openpyxl

# import xlwt
#
# workbook = xlwt.Workbook()
# sheet0 = workbook.add_sheet('sheet0')
# for i in range(0,300):
#     sheet0.write(0,i,i)
# workbook.save('num.xls')

# 不带格式
import xlsxwriter as xw
workbook = xw.Workbook('number.xlsx')
sheet0 = workbook.add_worksheet('sheet0')
for i in range(0,300):
    sheet0.write(0,i,i)
workbook.close()


# 性能不稳定
import openpyxl
workbook = openpyxl.load_workbook('number.xlsx')
sheet0 = workbook['sheet0']
sheet0['B3']= '2'
sheet0['C2']= '4'
sheet0['D7']= '3'
workbook.save('num_open.xlsx')

三、爬虫

爬取网页特定信息

1、爬取网页特定信息文字版
爬取网页特定信息视频版

1成功爬取到了目标网页源代码
import requests   #导入我们需要的requests功能模块
page=requests.get('https://www.crrcgo.cc/admin/crr_supplier.html?page=1')  #使用get方式获取该网页的数据。实际上我们获取到的就是浏览器打开百度网址时候首页画面的数据信息
print(page.text)   #把我们获取数据的文字(text)内容输出(print)出来
2抓取一个网页源代码中的某标签内容
import requests   #导入我们需要的requests功能模块
from bs4 import BeautifulSoup  #使用BeautifulSoup这个功能模块来把充满尖括号的html数据变为更好用的格式,from bs4 import BeautifulSoup这个是说从bs4这个功能模块中导入BeautifulSoup,是的,因为bs4中包含了多个模块,BeautifulSoup只是其中一个

req = requests.get(url="https://www.crrcgo.cc/admin/crr_supplier.html?page=1")  #使用get方式获取该网页的数据。实际上我们获取到的就是浏览器打开百度网址时候首页画面的数据信息
#print(req.text)   #把我们获取数据的文字(text)内容输出(print)出来
req.encoding = "utf-8"  #指定获取的网页内容,即第二句定义req的内容,用utf-8编码
html = req.text   #指定获取的网页内容,即第二句定义req的内容,用text
soup = BeautifulSoup(req.text,features="html.parser")  #用html解析器(parser)来分析我们requests得到的html文字内容,soup就是我们解析出来的结果
company_item = soup.find("div",class_="detail_head")  #find是查找,find_all查找全部。查找标记名是div并且class属性是detail_head的全部元素
dd = company_item.text.strip()   #strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。在这里就是移除多余的尖括号的html数据
print(dd)
3抓取网页中所有公司名
import requests   #导入我们需要的requests功能模块
from bs4 import BeautifulSoup  #使用BeautifulSoup这个功能模块来把充满尖括号的html数据变为更好用的格式,from bs4 import BeautifulSoup这个是说从bs4这个功能模块中导入BeautifulSoup,是的,因为bs4中包含了多个模块,BeautifulSoup只是其中一个

req = requests.get(url="https://www.crrcgo.cc/admin/crr_supplier.html?page=1")  #使用get方式获取该网页的数据。实际上我们获取到的就是浏览器打开百度网址时候首页画面的数据信息
#print(req.text)   #把我们获取数据的文字(text)内容输出(print)出来
req.encoding = "utf-8"  #指定获取的网页内容,即第二句定义req的内容,用utf-8编码
html = req.text   #指定获取的网页内容,即第二句定义req的内容,用text
soup = BeautifulSoup(req.text,features="html.parser")  #用html解析器(parser)来分析我们requests得到的html文字内容,soup就是我们解析出来的结果
company_items = soup.find_all("div",class_="detail_head")  #find是查找,find_all查找全部。查找标记名是div并且class属性是detail_head的全部元素
for company_item in company_items:
    dd = company_item.text.strip() #strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。在这里就是移除多余的尖括号的html数据
    print(dd)
4 抓取多个网页子标签的内容
import requests   #导入我们需要的requests功能模块
from bs4 import BeautifulSoup  #使用BeautifulSoup这个功能模块来把充满尖括号的html数据变为更好用的格式,from bs4 import BeautifulSoup这个是说从bs4这个功能模块中导入BeautifulSoup,是的,因为bs4中包含了多个模块,BeautifulSoup只是其中一个

inurl="https://www.crrcgo.cc/admin/crr_supplier.html?page="
for num in range(1,6):  #写入循环,我们只抓取1到5页的内容,这里的循环我们使用range函数来实现,range函数左闭右开的特性使得我们要抓取到5页必须指定6
    print("================正在爬虫第"+str(num)+"页数据==================")
    outurl=inurl+str(num)
    req = requests.get(url=outurl)  #将循环值与url拼接成完整的url,并获取页面数据
    #req = requests.get(url="https://www.crrcgo.cc/admin/crr_supplier.html?page=1")  #使用get方式获取该网页的数据。实际上我们获取到的就是浏览器打开百度网址时候首页画面的数据信息
    #print(req.text)   #把我们获取数据的文字(text)内容输出(print)出来
    req.encoding = "utf-8"  #指定获取的网页内容,即第二句定义req的内容,用utf-8编码
    html = req.text   #指定获取的网页内容,即第二句定义req的内容,用text
    soup = BeautifulSoup(req.text,features="html.parser")  #用html解析器(parser)来分析我们requests得到的html文字内容,soup就是我们解析出来的结果
    company_items = soup.find_all("div",class_="detail_head")  #find是查找,find_all查找全部。查找标记名是div并且class属性是detail_head的全部元素
    for company_item in company_items:
        dd = company_item.text.strip() #strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。在这里就是移除多余的尖括号的html数据
        print(dd)

四、娱乐

python实现用一定量的照片组成自定义的数字或姓名的形状

python实现用一定量的照片组成自定义的数字或姓名的形状
点我进行2分钟视频教程
在这里插入图片描述

词云

python词云制作(最全最详细的教程)
注意:难点在于安装cloudword这个库,没有安装过这个库,直接使用

pip install wordcloud -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
在这里插入图片描述

五、复习

使用Python对PDF文件进行词频统计分析并保存到CSV文件中

传送门——>>可用
注意点1:库的安装,window系统cmd时,使用下述进行安装
在这里插入图片描述

pip install pdfminer  -i https://pypi.tuna.tsinghua.edu.cn/simple/

注意点2:
需要更改文本名称,可考虑视频

注意点3:
脚本需要跟文件同个目录路径下

  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

fo安方

觉得俺的文章还行,感谢打赏,爱

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

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

打赏作者

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

抵扣说明:

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

余额充值