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
windows系统的“计划任务”+脚本
在Windows中,.bat文件是批处理文件,是与Linux中.sh(shell)文件很像的东西。
@echo off
d:
cd py.文件路径
start 名字.py
pause
或者
cd C:\Users\Season\Desktop\
python timer.py
自动发消息给钉钉
- 案例借鉴:传送门——>>PYTHON 使用钉钉机器人发送消息至钉钉
- 可执行代码如下(前提需要安装对应的第三方库,具体方面见“库”章节或者根据报错进行百度)
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 + '×tamp={}&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)
指定【微信】好友自动发送消息
- 安装依赖库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
- 源码
#打开微信,自动给某人发送固定信息
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 76人 51 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成功爬取到了目标网页源代码
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:
脚本需要跟文件同个目录路径下