飞桨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()