由问题可以看出,题主的Python基础掌握的不够扎实,学习过程当中也没进行代码实操。其实这是Python初学者经常遇到的问题,当务之急应该是夯实Python基础,在学习的过程当中代码实操,遇到问题及时需求帮助解答。搞定了这些,才算是真正的打好了Python入门的基础。
正好现在有一份Python教程,十分适合Python小白,除了Python基础知识之外,还能同时代码实操,又能互动答疑,应该可以解决题主遇到的问题。
真正的打好了Python基础之后,入门就变得简单多了。可以在网上找一些Python实操项目,也可以根据自己的实际需求写一个Python脚本实现预想中的功能。
网上的实操项目很多,因此就不再赘述了。这里说下个人初学Python时写的那些脚本,分享给大家。
1、文件或图片批量重命名
思路:
1)使用input获取文件路径、获取文件后缀
2)若文件为纯数字输入1,执行if语句,否则执行else语句
3)首先对旧文件名进行排序(纯数字和非纯数字要进行区分)
4)把要改的名字写入到和py文件同文件夹下的id.txt并进行读取,生成列表
5)构建旧文件全名称,包括路径
6)使用for循环生成新文件全名称,包括路径
7)使用os的rename功能进行重命名
注:如果担心排序问题造成没有一一对应的重命名,可打印重命名结果
代码如下:
import os
path = input('请输入文件所在路径(结尾加上/):')
houzhui = input("请输入后缀,(如.jpg):")
number = input("纯数字请输入1,否则请输入2:")
print(type(number))
if number == '1':
fileList = os.listdir(path)
fileList.sort(key=lambda x: int(x[:-4]))
print(fileList)
else:
fileList = os.listdir(path)
#从外部文件当中获取内容生成列表
file = open("id.txt", "r") #打开文件
txt = file.readlines() #读取每一行
ID = []
for z in txt:
z = z.replace("\n", "") #换行符替换为空
ID.append(z) #把值添加到列表当中
print(ID)
#循环,批量命名
n = 0
for i in fileList:
# 设置旧文件名(就是路径+文件名)
oldname = path + os.sep + fileList[n] # os.sep添加系统分隔符
for x in ID:
newname = path + os.sep + str(ID[n]) + houzhui #设置新文件名,可自行输入后缀格式
os.rename(oldname, newname) # 用os模块中的rename方法对文件改名
print(oldname, '======>', newname) #打印结果
n += 1
###后期可使用pyinstaller生成exe工具
os.system("pause") #可防止生成的exe执行文件执行完成即消失
2、抓取所在城市房价、地址等信息
思路:
1)确定目标网址,需要爬取的内容:小区名称、小区地址、出售状态、价格
2)找出网址规律,使用for...in...得到需要抓取的每个页面
3)使用requests请求页面
4)使用BeautifulSoup的select、findall得到目标区域
5)通过if...else...和for...in...以及strip()等对数据进行处理
6)把得到的结果通过append()添加到列表
7)使用pandas.DataFrame.to_excel保存到excel
代码:
from bs4 import BeautifulSoup
import re
import requests
import pandas
import openpyxl
URL = 'https://zz.newhouse.fang.com/house/s/b91/'
HTML = requests.get(URL)
SOUP = BeautifulSoup(HTML.content, 'html.parser', from_encoding='gb18030')
last_page = SOUP.select('.last')
page_number = int(last_page[0]['href'].split('/')[3].split('9')[1])
print(page_number)
names_list = []
adresses_list = []
all_type_list = []
all_money_list = []
url_demo = 'https://zz.newhouse.fang.com/house/s/b9{}/'
for i in range(1,(page_number+1)):
url = url_demo.format(i)
html = requests.get(url)
soup = BeautifulSoup(html.content,'html.parser',from_encoding='gb18030')
names = soup.select('.nlcd_name a')
adresses = soup.select('.address a')
for name in names:
names_list.append(name.text.strip())
for adress in adresses:
adress_detail = re.findall(r'".+"',str(re.findall(r'title=".+"',str(adress))))[0]
adresses_list.append(adress_detail.split('"')[1])
all_type = soup.findAll(name="span", attrs={"class":re.compile(r"forSale|inSale|outSale|zusale|zushou")})
for type in all_type:
all_type_list.append(type.text)
if soup.select('.kanzx'):
all_money_list.append('无')
all_money = soup.findAll(name="div", attrs={"class":re.compile(r"nhouse_price|kanesf")})
for money in all_money:
all_money_list.append(money.text.strip())
else:
all_money = soup.findAll(name="div", attrs={"class":re.compile(r"nhouse_price|kanesf")})
for money in all_money:
all_money_list.append(money.text.strip())
all_message = []
for m in range(0,len(names_list)):
message = [names_list[m],adresses_list[m],all_type_list[m],all_money_list[m]]
print(message)
all_message.append(message)
df = pandas.DataFrame(all_message)
df.to_excel('house_price.xlsx')
print(df)
写的小工具比较多,有空继续整理,如有问题,欢迎大家留言!
但是,如果上边两个例子,既有思路,又有代码,你还是不能看懂或者是直接copy下来依旧不知道如何运行,那毫无疑问,你的Python基础不够扎实,代码实操能力更是欠缺。这时候,你就需要这份超适合小白入门的Python教程了,本教程不仅提供Python基础学习,还能够同时进行代码实操,遇到问题还能互动答疑。