当前位置: 首页 > news >正文

day6-爬虫流程整理+线程与进程

爬虫流程整理

1.获取网络数据 - request  selenium
找到目标网站   -  直接用request ,这是请求头 - user-agent  -  cookie -- 设置代理请求拒绝 - 使用 - selenium  - cookie -  设置代理2.解析数据
正则表达式。css选择器(bs4,pyquery)。xpath3.保存数据
csv、excel
"""import requestsurl = 'https://www.pinduoduo.com/'response = requests.get(url)
print(response.status_code)

excel文件写操作


import openpyxl# 1.获取工作簿对象(工作簿对应的就是一个excel文件)
# 新建(默认有一个工作表)
# work_book = openpyxl.Workbook()
# 打开
# work_book = openpyxl.load_workbook(文件路径)# work_book = openpyxl.Workbook()
work_book = openpyxl.load_workbook('files/test2.xlsx')# 2.获取所有的表的表名
all_names = work_book.sheetnames
print(all_names)# 3.获取表
# sheet = work_book['Sheet']# 4.新建表
# 工作簿对象.create_sheet(表名, 表的下标)
# work_book.create_sheet('学生表')
# work_book.create_sheet('学生表2', 0)# 5.删除表
# 工作簿对象.remove(表对象)
# work_book.remove(work_book[表名])# 6.表重命名
# sheet = work_book['学生表2']
# sheet = work_book.active
# sheet.title = 'Student'# 7.写入数据到单元格
# 单元格对象.value   -   获取单元格中的内容
# 单元格对象.value = 新值   -   修改单元格中的内容
sheet = work_book['Student']# 1)获取单元格方法一
# 工作表对象.cell(行号: int, 列号: int)
cell1 = sheet.cell(1, 1)
# 修改单元格中的内容
# cell1.value = '姓名'cell2 = sheet['B1']
# cell2.value = '年龄'# 清空单元格
cell2.value = ''# 5.保存文件
work_book.save('./files/test2.xlsx')

excel文件读操作

import openpyxl# 1.打开文件
wb = openpyxl.load_workbook('files/test1.xlsx')# 2.获取工作表
# sheet = wb['学生表']
sheet = wb.active# 3.获取单元格
# 1)获取单个单元格
# sheet.cell(行号, 列号)    -  行号和列号都是从1开始的数字
# sheet[位置信息]  - 位置信息是类似:'A1'、'B2'的行列信息,其中字母是列信息,数字是行号# 2)以行为单位获取单元格对象
# 工作表.iter_rows(最小行号, 最大行号, 最小列号, 最大列号)
cells = sheet.iter_rows(1, 4, 1, 4)
print(list(cells))row_4 = sheet.iter_rows(4, 4)
print(list(row_4))cells = sheet.iter_rows(2, 4, 1, 2)
print(list(cells))# 3)以列为单位获取单元格对象
cells = sheet.iter_cols(1, 4, 1, 4)
print(list(cells))all_scores = sheet.iter_cols(4, 4, 2, 4)
# print(list(all_scores))
for score_cell in next(all_scores):print(score_cell.value)

51job数据分析岗位爬取


import requests
from re import findall
from json import loads
import time
import os
import openpyxl
# url = 'https://search.51job.com/list/000000,000000,0000,00,9,99,数据分析,2,2001.html?lang=c&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&ord_field=0&dibiaoid=0&line=&welfare='
# headers = {
#     'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36'
# }
# response = requests.get(url, headers=headers)
# print(response.text)
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36 Edg/90.0.818.66'}def get_one_page(page):url = f'https://search.51job.com/list/000000,000000,0000,00,9,99,数据分析,2,{page}.html?lang=c&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&ord_field=0&dibiaoid=0&line=&welfare='response = requests.get(url, headers=headers)if response.status_code == 200:json_data = findall(r'window.__SEARCH_RESULT__\s*=\s*(\{.+?\})</script>', response.text)[0]return loads(json_data)['engine_search_result']else:print('请求失败!')def get_all_data():all_data = []page = 1while True:result = get_one_page(page)if not result:print('没有更多数据')breakpage += 1# all_data.extend(result)# yield result# 保存到excel文件中save_page_data(result)print(f'获取第{page}页数据成功!')time.sleep(1)# return all_datadef get_work_book():# 1. 判断文件是否存在, 存在就加载,不存在就创建if os.path.exists('files/招聘信息.xlsx'):wb = openpyxl.load_workbook('files/招聘信息.xlsx')else:wb = openpyxl.Workbook()# 2. 判断是否存在数据分析的表names = wb.sheetnamesif '数据分析' in names:sheet = wb['数据分析']else:sheet = wb.create_sheet('数据分析')titles = ['岗位名称', '薪资', '公司名称', '公司性质', '公司地址', '要求', '福利']for col in range(1, len(titles) + 1):sheet.cell(1, col).value = titles[col - 1]return wb, sheetdef save_page_data(data: list):row = sheet.max_row + 1for job in data:# 写入对应的数据# titles = ['岗位名称', '薪资', '公司名称', '公司性质', '公司地址', '要求', '福利']job_info = [job.get('job_name', ''),job.get('providesalary_text', ''),job.get('company_name', ''),job.get('companytype_text', ''),job.get('workarea_text', ''),'/'.join(job.get('attribute_text', ['-', '-', '-', '-', '-'])),job.get('jobwelf', '')]for col in range(1, len(job_info)+1):sheet.cell(row, col).value = job_info[col-1]print(job)row += 1wb.save('files/招聘信息.xlsx')if __name__ == '__main__':wb, sheet = get_work_book()get_all_data()

selenium 设置选项


from selenium import webdriver
# from selenium.webdriver import ChromeOptionsurl = 'https://www.jd.com'# 1.创建设置选项
options = webdriver.ChromeOptions()# 2.添加选项参数
# 1) 取消测试环境
options.add_experimental_option('excludeSwitches', ['enable-automation'])# 2) 取消图片加载(提高爬虫效率)
options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2})b = webdriver.Chrome(options=options)
b.get(url)
print(b.page_source)

frame 切换


from selenium import webdriverurl = 'https://mail.163.com/'b = webdriver.Chrome()
b.get(url)"""
有的时候会遇到这样的网页:一个网页对应的html标签嵌套了其他的html标签
(前端如果要实现嵌套的功能必须要将被嵌套的html放在iframe标签中),
如果需要爬取网页内容在嵌套的html里面,需要先让浏览器选中内容嵌套的html。
(浏览器对象默认选中的是最外面的html标签)
"""
# 1. 获取提供html标签的iframe标签
box = b.find_element_by_css_selector('#loginDiv>iframe')# 2.切换frame
b.switch_to.frame(box)print(b.page_source)

51job


from selenium import webdriver
from selenium.webdriver.common.keys import Keysurl = 'https://www.51job.com/'
b = webdriver.Chrome()b.get(url)input = b.find_element_by_css_selector('#kwdselectid')
input.send_keys('数据分析')
input.send_keys(Keys.ENTER)allcity = b.find_element_by_css_selector('.allcity')
allcity.click()print(b.page_source)beijing = b.find_element_by_css_selector('.panel_lnp.panel_py.panel_ct2 .de.d3 tbody tr td em')
print(beijing.text)
beijing.click()sure = b.find_element_by_css_selector('#popop > div > div.but_box > span')
sure.click()

线程与进程

"""
Time:2021/6/1  17:03
Author:Spectre
"""
"""
如果CPU调度(切换)足够快,就造成了多线程并发执行的假象
线程很多的情况下,会消耗大量CPU资源
"""
# 一个进程默认有一个线程,这个线程叫主线程。其他的线程(需要手动创建)都叫子线程。
# 如果一个python程序需要子线程需要手动创建线程类Thread的对象
# 代码实现多线程原理:import time
from datetime import datetime
from threading import Thread
# Thread类  - 线程类  Threa类的对象  - 子线程def download(name):print(f'{name}开始下载:{datetime.now()}')time.sleep(2)print(f'{name}结束下载:{datetime.now()}')# 1.在一个线程(主线程)中下载三个电影:消耗6秒
download('肖申克的救赎')
download('霸王别姬')
download('阿甘正传')
# 肖申克的救赎开始下载:2021-06-01 17:16:28.267844
# 肖申克的救赎结束下载:2021-06-01 17:16:30.287582
# 霸王别姬开始下载:2021-06-01 17:16:30.287582
# 霸王别姬结束下载:2021-06-01 17:16:32.293531
# 阿甘正传开始下载:2021-06-01 17:16:32.293531
# 阿甘正传结束下载:2021-06-01 17:16:34.298189# 2.在三个子线程中分别下载三个电影(2秒)
# 1)创建线程对象
t1 = Thread(target=download,args=('肖申克的救赎',))
t2 = Thread(target=download,args=('霸王别姬',))
t3 = Thread(target=download,args=('阿甘正传',))# 2)启动线程
t1.start()
t2.start()
t3.start()# 10个线程

homework

"""
Time:2021/6/1  19:12
Author:Spectre
"""from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
from bs4 import BeautifulSoup
import csvimport time
from datetime import datetime
from threading import Threaddef get_net_data():global b# b = webdriver.Chrome()# b.get('https://search.51job.com/list/090200,000000,0000,00,9,99,%25E6%2595%25B0%25E6%258D%25AE%25E5%2588%2586%25E6%259E%2590,2,2.html?lang=c&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&ord_field=0&dibiaoid=0&line=&welfare=')## input = b.find_element_by_css_selector('#kwdselectid')# input.send_keys('数据分析')# input.send_keys(Keys.ENTER)# time.sleep(1)#提前设置最大高度# max_height = 7500# 每次滚动的位置# y = 0# while True:#     y += 200#     b.execute_script(f'window.scrollTo(0,{y})')#     if y>max_height:#         break#     time.sleep(0.5)# print(b.page_source)# for i in range(2):#     b = webdriver.Chrome()#     b.get('https://search.51job.com/list/090200,000000,0000,00,9,99,%25E6%2595%25B0%25E6%258D%25AE%25E5%2588%2586%25E6%259E%2590,2,{i+1}.html?lang=c&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&ord_field=0&dibiaoid=0&line=&welfare=')##     print(b.page_source)# return b.page_source# def fanye():
#     time.sleep(5)
#     search_btn = b.find_element_by_css_selector('.p_in>ul>.next>a')
#     # 点击按钮
#     search_btn.click()def an_data(data):soup = BeautifulSoup(data,'lxml')li_list = soup.select('.j_joblist>.e')# print(len(li_list))# print(li_list)# name_list = li_list[0].select_one('.jname.at').attrs['title']# print(name_list)all_item = []for li in li_list:item = {}name_list = li.select_one('.jname.at').attrs['title']item['name'] = name_lista_list = li.select_one('a').attrs['href']item['link'] = a_listtime_list =li.select_one('.time').get_text()item['time'] = time_listprice_list = li.select_one('.sal').get_text()item['price'] = price_listinfo_list = li.select_one('.d.at').get_text().replace(' ','')item['info'] = info_listtags_list =li.select_one('.tags')tags_list = li.select_one('.tags').attrs['title'] if tags_list else ''item['tags'] = tags_listco_name_list = li.select_one('.er>a').get_text()item['co_name'] = co_name_listco_link_list = li.select_one('.er>a').attrs['href']item['co_link'] = co_link_listco_type_list = li.select_one('.er>.dc.at').get_text()item['co_type'] = co_type_listco_intro_list = li.select_one('.er>.int.at').get_text()item['co_intro'] = co_intro_listall_item.append(item)print(all_item)# print(len(all_item))return all_itemdef download(str):print(f'开始下载:{datetime.now()}{str}')time.sleep(2)print(f'结束下载:{datetime.now()}')if __name__ == '__main__':t = []b = webdriver.Chrome()for i in range(10):b.get(f'https://search.51job.com/list/090200,000000,0000,00,9,99,%25E6%2595%25B0%25E6%258D%25AE%25E5%2588%2586%25E6%259E%2590,2,{i+1}.html?lang=c&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&ord_field=0&dibiaoid=0&line=&welfare=')t.append(Thread(target=download, args=(an_data(b.page_source),)))# print(an_data(get_net_data()))# time.sleep(1)for x in t:x.start()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-2839.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

实训第一天以及第二天所学记录

实训第一天以及第二天所学记录 浏览器内核 IE&#xff1a;Trident Firefox&#xff1a;Gecko Chrome&#xff1a;Webkit / Blink Safari&#xff1a;Webkit Opera&#xff1a;Presto / Blink 在VScode中使用注释的快捷键 按住键盘的Ctrl/ 元素 &#xff08;标签 标记&…...

跨域请求

/* * Description: 配置文件 */ module.exports { publicPath: "./", devServer: { open: true, proxy: "http://106.15.179.105/api" //跨域路径 }, }; // proxy是代理的意思 // 代理跨域就是在欺骗浏览器 让浏览器认为你访问的还是 同…...

Mac os下通过Anaconda在远程服务器配置python虚拟环境

一、SSH管理软件 这里推荐一款本人正在使用的软件&#xff0c;Termius。Termius是一款非常好用而且漂亮的SSH客户端&#xff0c;能快速远程控制服务器&#xff0c;可以定制自己喜欢的主题.Termius不仅涵盖了Windows、Linux、OSX&#xff0c;还变态得支持Android和iOS&#xff…...

Labview需求(部分)

本人从事工控行业多年,有一些资源,目前labview的单子干不过来了,想找几个靠谱的labview工程师跟我合作,想做兼职,接单的labview工程师可以私聊我,另外我有一些项目还需要跟单片机工程师,plc工程师,fpga工程师合作,欢迎大家找我合作!以下是手里比较着急的项目,需要外包 需求1&am…...

2021java1年经验公司面试真题

1面我就省略了&#xff0c;主要就是看你的以前工作情况&#xff0c;以前工作内容能不能清晰表达&#xff0c;还有一些简单的java基础问题&#xff0c;大概20多分钟。二面就是40分钟基础&#xff0c;20分钟业务&#xff0c;10分钟个人情况。下面是二面问题 1.自我介绍 做一下自…...

Unity基础之C#核心篇笔记4:多态

Unity基础之C#核心篇笔记4&#xff1a;多态多态1.多态的概念2.解决的问题3.多态的实现4.总结抽象类和抽象方法1.抽象类2.抽象函数3.总结4.练习题接口1.接口的概念2. 接口的申明3.接口的使用4.接口可以继承接口5.显示实现接口6.总结7.练习题密封方法1.密封方法基本概念2.实例3.总…...

LeetCode每日一题 - 有多少小于当前数字的数字

题目&#xff1a; 给你一个数组 nums&#xff0c;对于其中每个元素 nums[i]&#xff0c;请你统计数组中比它小的所有数字的数目。 换而言之&#xff0c;对于每个 nums[i] 你必须计算出有效的 j 的数量&#xff0c;其中 j 满足 j ! i 且 nums[j] < nums[i] 。 以数组形式返回…...

用Python爬取彼岸图网图片

用Python爬取彼岸图网图片 *使用了 四个模块 import time import requests from lxml import etree import os 没有的话自行百度安装。 #encoding utf-8 import time import requests from lxml import etree import os# http://www.netbian.com/ 爬虫 if __name__ __mai…...

第k个数(快速选择)

算法思路 快速选择&#xff1a; 1.即任意选一个数&#xff0c;将数组划分为二。 2.最终根据该数所在的位置&#xff0c;即第&#xff1f;大&#xff0c;选择第k大的数字所在区间进行划分。 时间复杂度分析&#xff0c;第一次划分n,下一次划分期望n/2&#xff0c;n/4…累加和小…...

yolov5 detect.py报错

新手求助 yolov5训练了自己的数据集后&#xff0c;test没问题&#xff0c;但是运行detect.py就报错了&#xff0c;一直找不到问题所在&#xff0c; 求大佬指点指点...

DEX 争霸战火升级,BabySwap 会否成为下一代黑马?

在 AMM机制大力推动下&#xff0c;DEX的群雄争霸比预想中来得要快且凶猛。伴随着诸如高盛等主流资本逐步认可DeFi 的意义&#xff0c;在真正的去中心化金融爆发的前夜&#xff0c;可以说谁抢占了DEX 红海的先机&#xff0c;谁就赢得了未来。 从早期以太坊的Uniswap和DoDo&…...

flutter 常用的第三方组件

引用文章链接&#xff1a; https://www.jianshu.com/p/a523e5f131b2 1、格式化日期时间组件&#xff1a;https://pub.dev/packages/date_format 2、日期选择组件&#xff1a;https://pub.dev/packages/flutter_cupertino_date_picker 3、轮播图组件&#xff1a;https://pub.…...

Android面试回忆录:帮助程序员提高核心竞争力的30条建议,真香!

**新技术层出不穷&#xff0c;去年kotlin到如今Flutter&#xff0c;技术迭代&#xff0c;你是否会变得固步自封&#xff1f;**那么看本篇文章帮你解决问题&#xff0c;让你知道怎么样学习&#xff0c;学习那些技术点才能不被时代的迭代快速淘汰&#xff01; 首先&#xff0c;先…...

2021-05-30解决centos+宝塔面板,FTP传输421 Too many connections问题错误

解决centos宝塔面板&#xff0c;FTP传输421 Too many connections”问题错误 1、首先连入服务器 在/www/server/pure-ftpd/etc下&#xff0c;找到pure-ftpd.conf 2、vim pure-ftpd.conf 没有vim的&#xff0c;用其他编辑软件也可以 3、找到 #Maximum number of sim clients wit…...

RK3399 DDR频率修改

RK3399 DDR频率修改 一、DDR当前频率获取与可调节范围 1、获取当前DDR频率、可调值、容量 cat /sys/class/devfreq/dmc/cur_freq2、查看DDR频率可调节的值 cat /sys/class/devfreq/dmc/available_frequencies3、获取DDR容量 cat /proc/meminfo二、DDR测试定频 1、因为RK3…...

javascript正则表达式常用合集

javascript正则表达式常用的合集 参考网址 {n}: n 是一个正整数&#xff0c;匹配了前面一个字符刚好出现了 n 次 {n,}: n是一个正整数&#xff0c;匹配前一个字符至少出现了n次 {n,m}: n 和 m 都是整数。匹配前面的字符至少n次&#xff0c;最多m次。如果 n 或者 m 的值是0&…...

qApp加载qss技巧

使用Qt加载qss样式&#xff0c;一般操作是读取文件&#xff0c;通过setStyleSheet设置 但是qApp只需如下&#xff1a; qApp->setStyleSheet("file:///:/test.qss");//只适用于qApp...

发现一款好用到爆的数据库工具 - DataGrip(就是耗内存)

作者&#xff1a;Atzuge cnblogs.com/zuge/p/7397255.html 最近看到一款数据库客户端工具&#xff0c;DataGrip&#xff0c;是大名鼎鼎的JetBrains公司出品的&#xff0c;就是那个出品Intellij IDEA的公司。 - 就是耗内存 DataGrip是一款数据库管理客户端工具&#xff0c;方便…...

Java 类加载器(ClassLoader)的实际使用场景有哪些?

什么是classloader classloader顾名思义&#xff0c;即是类加载。虚拟机把描述类的数据从class字节码文件加载到内存&#xff0c;并对数据进行检验、转换解析和初始化&#xff0c;最终形成可以被虚拟机直接使用的Java类型&#xff0c;这就是虚拟机的类加载机制。了解java的类加…...

Bad owner or permissions on C:\\Users\\USER/.ssh/config on Windows

Bad owner or permissions on C:\Users\USER/.ssh/config 问题描述 由于使用vscode远程连接服务器突然新增了C:\Users\USER/.ssh/config &#xff0c;再powershell/cmd下面使用openssh&#xff08;windows自带&#xff09;连接服务器会出现Bad owner or permissions on C:\\U…...

CyberVein项目进展半月报(2021.05.16-05.31)

​欢迎大家加入并关注CyberVein其他自媒体社交平台&#xff0c;获取最新动态&#xff01; 官方微博 weibo.com/CyberVein 官方CSDN blog.csdn.net/CyberVein 官方电报群 t.me/CyberVeinCommunity 官方推特 twitter.com/cyberveingroup 点击“阅读原文”跳转至CyberVein官…...

基于区块链治理数据,大数据治理的新思路

本文为转载&#xff0c;点击阅读原文 阅读原文 当下&#xff0c;大数据的“堰塞湖”已经形成&#xff0c;数据治理问题迫在眉睫。传统的治理概念来自政府、企业、IT领域&#xff0c;数据治理既有其一般性&#xff0c;也有其特殊性。本文提出数据治理的根本保障在于增加大数据…...

5,配置烧录环境 - openOCD

开发环境&#xff1a;ubuntu20 stm32CubeMX gcc-arm-none-eabi&#xff0c;烧录工具&#xff1a;openOCD 1&#xff0c;下载 openOCD...

4-1 Python常用内置算法与数据结构常考题

一、你使用过哪些常用内置算法和数据结构 仔细回想一下你用过哪些内置的算法数据结构&#xff1f; 1.sorted 2.dict/list/set/tuple… 3.问题&#xff1a;想的不全或者压根没了解和使用过 数据结构/算法语言内置内置库线性结构list(列表)/tuple(元组)array(数组&#xff0c;不…...

【CSS进阶】使用CSS gradient制作绚丽渐变纹理背景效果

前言 一直对渐变背景这块比较感兴趣&#xff0c;但是因为每天加班实在太忙了&#xff0c;任务也比较多。所以就只能下班的时间研究渐变背景这方面的知识&#xff0c;一来满足了自己的好奇心&#xff0c;二来可以更加了解这方面的知识。跟更多不断学习的小伙伴们一起进步&#…...

JAVA 基础学习之 继承与方法覆写

1 继承引入​​​​​​​ 三个类都有重复的代码&#xff0c;可以把这共同的代码抽出去&#xff0c;抽出去放到另外一个类里面&#xff1b;下面的3个类和上面的类需要发生一点关系&#xff08;继承&#xff09;&#xff0c;上面的类叫做 父类&#xff08;超类&#xff0c;基类&…...

秒杀系统 - 实现用户登录(两次MD5,JSR303参数检验,全局异常处理器)和分布式session功能

文章目录用户登录数据库设计明文密码两次MD5处理加密思路安全性加密过程导入MD5依赖封装MD5Utils实现登录页面JSR303参数检验简介流程导入依赖常用注解自定义注解测试全局异处理器原因流程GlobalException类GlobalExceptionHandler类接口测试分布式sessionsession和 cookie流程…...

测试为什么不够敏捷?美团资深软测工程师为你解答

测试是为了保证软件的质量&#xff0c;敏捷测试关键是保证可以持续、及时的对软件质量情况进行全面的反馈。由于在敏捷开发过程中每个迭代都会增加功能、修复缺陷或重构代码&#xff0c;所以在完成当前迭代新增特性测试工作的同时&#xff0c;还要通过回归测试来保证历史功能不…...

First Day | Web前端 | 实训笔记~

注释 解释说明代码&#xff0c;隐藏代码 注释不能嵌套 语法实现&#xff1a;<!--注释内容--> 常用标签&#xff1a; 1、<p>段落</p> 2、<a>链接</a> ①href&#xff1a;创建指向另一个文档的链接 <a href"/index.html">本…...

【Laravel3.0.0源码阅读分析】会话驱动类driver.php

<?php namespace Laravel\Session\Drivers;interface Driver {/*** Load a session from storage by a given ID.* 通过给定的ID从存储加载会话。* If no session is found for the ID, null will be returned.** param string $id* return array*/public function load(…...

一包烟尝试解决docx安装失败,并尝试运行标号、全文格式、生成表格自动化处理(2)

以下是关于使用pycharm 的docx库学习自动化处理的记录 注意&#xff0c;使用的是python-docx&#xff0c;而不是19年左右使用的docx。 File>settings>project:XXXX&#xff08;项目名称&#xff09;>右侧列表左下角小加号 此时在窗口中查找python-docx 老版的docx 但…...

基于Android的学生管理系统App设计与实现(Eclipse开发)

目 录 摘 要 I Abstract II 1 绪论 1 1.1 选题背景及意义 1 1.2 研究现状 1 1.2.1 教育系统发展现状 1 1.2.2 手机的应用市场发展现状 1 1.2.3 Android平台介绍 3 1.2.4 Android管理学生信息的意义 5 1.3.3 开发的环境及开发工具介绍 6 1.3 研究主要内容 6 2 相关技术介绍 7 2.…...

基于 Node 环境的终端 cli 翻译工具

大厂技术 高级前端 Node进阶点击上方 程序员成长指北&#xff0c;关注公众号回复1&#xff0c;加入高级Node交流群基于 Node 环境的终端 cli 翻译工具导语大家好~我是荣顶,不知道大家平时开发时,是否需要经常查单词,和一些报错长短句,由于我的英文实在是不怎么好,所以日常使用…...

Ant Design of React从入门到开发教程

Ant Design Pro 是一个企业级中后台前端/设计解决方案。 目录: 一:开发前的准备 二:创建页面 三:创建组件并引用 四:封装网络请求和网络请求走向 五:登录流程以及路由权限设置 六:父组件和子组件相互传值和接收 七:for 循环渲染组件 Ant Design Pro 全家桶技术…...

搜索引擎的那些事(title信息提取)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们在谈到搜索引擎的时候&#xff0c;说到了网页下载、说到了分词、说到了多线程。但是&#xff0c;我们要清楚这一切的目的都是为了在网页中…...

SAP ALV tree的一个最简单demo

report zbcalv_tree_01. types: begin of ty_tree_node,id type char18,text type char40,end of ty_tree_node.data: g_alv_tree type ref to cl_gui_alv_tree,g_custom_container type ref to cl_gui_custom_container.data: gt_sflight type sflight occurs...

React Native项目实战之fetch请求并填充界面

fetch简介 在 AJAX 时代,进行请求 API 等网络请求都是通过XMLHttpRequest 或者封装后的框架进行网络请求。而在前端快速发展地过程中,为了契合更好的设计模式,产生了 fetch 框架。 fetch相比XMLHttpRequest,提供更加强大、高效的网络请求方式,所以在 Hybrid App 开发模式…...

elasticsearch实现类似京东的商品搜索效果(elasticsearch动态聚合)

用到京东的对其搜索应该不会陌生&#xff0c;其搜索也是使用elasticsearch完成的&#xff0c;下图为一个搜索效果图&#xff1a; 搜索筛选条件会根据查询返回的结果动态变化&#xff0c;要实现这个功能就要用到elasticsearch的聚合功能&#xff0c;先看下商品索引对应的映射&am…...

基于ssm和jsp的BBS-程序源论坛(UEditor)

前言&#xff1a; MVC架构中&#xff0c;功能包括DAO层&#xff0c;SERVICE层&#xff0c;ENTITY层&#xff0c;CONTROLLER层&#xff0c;UTIL层 1.其中DAO层&#xff0c;也就是和数据库打交道&#xff0c;夹在业务逻辑与数据库资源的中间 2.service层&#xff0c;也就是服务层…...

Thymeleaf特点(6)- 模块化

这次我们学习灵活的布局&#xff0c;或者说提高代码的复用性。 无论你浏览什么网页&#xff0c;都会&#xff08;基本上&#xff09;看到它------没错&#xff0c;它就是导航栏。 以上列举了 4 个网站的导航栏 &#xff0c;在网站内部跳转时&#xff0c;它们基本上不变&#x…...

关于block 用法

BlockApple 在C, Objective-C, C加上Block這個延申用法。目前只有Mac 10.6 和iOS 4有支援。Block是由一堆可執行的程式組成&#xff0c;也可以稱做沒有名字的Function (Anonymous function)。如果是Mac 10.6 或 iOS 4.0 之前的平台可以利用 http://code.google.com/p/plblocks…...

微信小程序开发的坑---路由参数

今天&#xff0c;咱们来说一下&#xff0c;路由跳转和路由参数 1、路由跳转 (1)通过a便签的href进行跳转 eg: <a hrefpages/detail/main?idXXX></a> (2)通过wx内置的路由进行跳转【这就不详细说了】wx官方路由 举个例子&#xff1a; eg&#xff1a;let url…...

winform窗体去掉标题头部的两种方式

winform窗体去掉标题、ICO、最大化、最小化、关闭有两种方式&#xff1a; 1、设置form的FormBorderStyle属性为None&#xff1b; 2、设置form的ControlBox为False&#xff0c;设置Text为空&#xff1b; 转载于:https://www.cnblogs.com/ap0606122/archive/2012/10/23/2734954.h…...

笔记系列——JS练习心得

组件之间传值 在main.js 中定义Bus const Bus new Vue()new Vue () {el: #main,data: {Bus} }在组件中&#xff0c;通过 $emit 将数据传递出去 methods: {getName (item) {this.$root.Bus.$emit(title, item)} }在组件中&#xff0c;通过 create 生命周期函数监听传值 cr…...

XSS跨站脚本实例

刚毕业时候的做的报告&#xff0c;整理文档的时候搜了出来&#xff0c;可能不是很正确仅供参考了 URL注入 例如在页面上输入 http://localhost/SNDA.BBSEngine.UI.ALWeb/TopicContent.aspx?BoardID59&TopicID6890&Page1-->");></SCRIPT></style…...

中文网html页面布局,HTML 布局 - [ HTML中文参考手册 ] - 在线原生手册 - php中文网...

HTML 布局网页布局对改善网站的外观非常重要。请慎重设计您的网页布局。亲自试一试 - 实例使用 元素的网页布局html>#header {background-color:black;color:white;text-align:center;padding:5px;}#nav {line-height:30px;background-color:#eeeeee;height:300px;width:100…...

工作五步法则模式-结论-原因-结论-措施-建议

结论-原因-结论-措施-建议...

二叉树的基本结论

有关二叉树的结论&#xff1a;性质1&#xff1a;二叉树第i层上的结点数目最多为2i-1(i>1)性质2&#xff1a;深度为k的二叉树至多有2^(k) - 1个结点&#xff08;k>1&#xff09;,叶子节点为 2^(k - 1) 性质3&#xff1a;包含n个结点的二叉树的高度至少为( log2(n) )1性质4…...

论文结论与摘要的区别

本文转载自西南交大学位办公众号文章“学为|论文结论与摘要的区别”。...

论文写作-结论

1.结论5句就够了。 2.避免使用与摘要内相同的句子。 3.结论的一般内容&#xff1a; 本研究结果说明了什么问题&#xff0c;得出了什么规律性的东西&#xff0c;解决了什么理论或实际问题&#xff0c;在理论或生产生活中的实用价值或意义。与前人研究工作的异同。对前人有关问…...