持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第24天,点击查看活动详情
目录
解决 AttributeError: module 'urllib' has no attribute 'request'
UnboundLocalError: local variable ‘XXX‘ referenced before assignment
飞桨Python入门
编辑
requests.get(url=url, headers=headers) 请求网页返回的是response对象
response.text: 获取网页文本数据
response.json: 获取网页json数据
解析数据
常用解析数据方法: 正则表达式、css选择器、xpath、lxml…
常用解析模块:bs4、parsel…
""""""
import pprint
import requests
import parsel
import csv
if __name__ == '__main__':
print(1)
import pprint
import requests
import parsel
import csv
# csv模块保存数据到Excel
f = open('豆瓣电影数据.csv', mode='a', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=['电影名字', '参演人员', '上映时间', '拍摄国家', '电影类型',
'电影评分', '评价人数', '电影概述'])
csv_writer.writeheader() # 写入表头
# 模拟浏览器发送请求
for page in range(0, 251, 25):
url = f'https://movie.douban.com/top250?start={page}&filter='
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
}
response = requests.get(url=url, headers=headers)
# 把 response.text 文本数据转换成 selector 对象
selector = parsel.Selector(response.text)
# 获取所有li标签
lis = selector.css('.grid_view li')
# 遍历出每个li标签内容
for li in lis:
# 获取电影标题 hd 类属性 下面的 a 标签下面的 第一个span标签里面的文本数据 get()输出形式是 字符串获取一个 getall() 输出形式是列表获取所有
title = li.css('.hd a span:nth-child(1)::text').get() # get()输出形式是 字符串
movie_list = li.css('.bd p:nth-child(1)::text').getall() # getall() 输出形式是列表
star = movie_list[0].strip().replace('\xa0\xa0\xa0', '').replace('/...', '')
movie_info = movie_list[1].strip().split('\xa0/\xa0') # ['1994', '美国', '犯罪 剧情']
movie_time = movie_info[0] # 电影上映时间
movie_country = movie_info[1] # 哪个国家的电影
movie_type = movie_info[2] # 什么类型的电影
rating_num = li.css('.rating_num::text').get() # 电影评分
people = li.css('.star span:nth-child(4)::text').get() # 评价人数
summary = li.css('.inq::text').get() # 一句话概述
dit = {
'名字': title,
'参演人员': star,
'上映时间': movie_time,
'拍摄国家': movie_country,
'电影类型': movie_type,
'电影评分': rating_num,
'评价人数': people,
'电影概述': summary,
}
pprint.pprint(dit)
csv_writer.writerow(dit)
解决 AttributeError: module 'urllib' has no attribute 'request'
解决方法:
按照上面两类原因检查代码,在Python3中加入import urllib.request就解决错误,修正代码:
import urllib
import urllib.request
UnboundLocalError: local variable ‘XXX‘ referenced before assignment
在赋值之前引用了局部变量
提前生明并且赋值,主义类型
使用python的tkinter库
编辑
编辑
import os
train_parameters = {
"input_size": [1, 20, 20], #输入图片的shape
"class_dim": -1, #分类数
"src_path":"./work/data/characterData.zip", #原始数据集路径
"target_path":"./work/data/dataset", #要解压的路径
"train_list_path": "./train_data.txt", #train_data.txt路径
"eval_list_path": "./val_data.txt", #eval_data.txt路径
"label_dict":{}, #标签字典
"readme_path": "/home/aistudio/data/readme.json", #readme.json路径
"train_batch_size": 20 #训练的轮数
}
import matplotlib.pyplot as plt
if __name__ == '__main__':
print()
# 绘制图1
import tkinter
import tkinter.ttk
windows = tkinter.Tk()
windows.title("小白问题解答演示用途")
windows.geometry("500x220+200+200")
windows.configure(background="#ffffff")
windows.resizable(0,0)
def kaishi():
for i in range(1, 10000000):
print(i)
windows.update() #更新窗口
#按钮
demoBtn = tkinter.Button(windows,text="kaishi",height=1,command=kaishi)
demoBtn.place(x=5,y=2)
# 长期保持
windows.mainloop()
import tkinter as tk
# 创建主窗口
window = tk.Tk()
window.title('第一个窗体') # 标题
# 获取屏幕尺寸计算参数,使窗口显示再屏幕中央
screen_width = window.winfo_screenwidth()
screen_height = window.winfo_screenheight()
width = 650
height = 500
# window_size = '%dx%d+%d+%d' % (width, height, (screen_width-width)/2, (screen_height-height)/2)
window_size = f'{width}x{height}+{round((screen_width - width) / 2)}+{round((screen_height - height) / 2)}' # round去掉小数
window.geometry(window_size) # 窗口大小
# window.resizable(width=False,height=False) #设置窗体是否可用改变大小;默认可用改变
# 进入等待与处理窗口(监控每个组件,当组件发生变化或触发事件时,会立即更新窗口)
window.mainloop()