鱼C论坛

 找回密码
 立即注册

[技术交流] py3000愉快的开始

[复制链接]
 楼主| 发表于 2017-12-18 21:01:10 | 显示全部楼层

061论一只爬虫的自我修养9:异常处理(上)

本帖最后由 摆渡终极鉴黄师 于 2017-12-19 17:00 编辑

当urlopen这个方法无法处理一个响应的时候,就会引发一个URLError的异常,例如
>>> import urllib.request
>>> import urllib.error
>>> req = urllib.request.Request("http://www.ooxx-fisexyhc.com")
>>> try:
        urllib.request.urlopen(req)
except urllib.error.URLError as e:
        print(e.reason)

       
[Errno 11004] getaddrinfo failed
>>>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-19 17:09:11 | 显示全部楼层

061论一只爬虫的自我修养9:异常处理(中)

404页面无法找到,ta没办法帮你处理,需要人工进行过滤
403请求禁止
401需要进行一个人工验证
这三个比较常见
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-20 22:07:58 | 显示全部楼层

061论一只爬虫的自我修养9:异常处理(中2)

本帖最后由 摆渡终极鉴黄师 于 2017-12-21 17:33 编辑

可以使用HTTPError实例作为页面返回的响应对象
>>> import urllib.request
>>> import urllib.error
>>> req = urllib.request.Request("http://www.fishc.com/ooxx.html")
>>> try:
        urllib.request.urlopen(req)
except urllib.error.HTTPError as e:
        print(e.code)
        print(e.read())

       
404
b'<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">\n<html><head>\n<title>404 Not Found</title>\n</head><body>\n<h1>Not Found</h1>\n<p>The requested URL /ooxx.html was not found on this server.</p>\n<hr>\n<address>Apache Server at www.fishc.com Port 80</address>\n</body></html>\n'
>>>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-21 17:53:47 | 显示全部楼层

061论一只爬虫的自我修养9:异常处理(下)

处理异常推荐的写法,例如
from urllib.request import Request, urlopen
from urllib.error import URLError
req = Request(someurl)
try:
    response = urlopen(req)
except URLError as e:
    if hasattr(e, 'reason'):
        print('We failed to reach a server.')
        print('Reason: ', e.reason)
    elif hasattr(e, 'code'):
        print('The server couldn\'t fulfill the request.')
        print('Error code: ', e.code)
else:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-22 23:03:59 | 显示全部楼层

062论一只爬虫的自我修养10:安装Scrapy(上)

本帖最后由 摆渡终极鉴黄师 于 2017-12-23 10:23 编辑

Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-23 10:24:46 | 显示全部楼层

062论一只爬虫的自我修养10:安装Scrapy(上2)

Scrapy最初是为了网络抓取所涉及的,也可以应用在API所返回数据(例如Amazon Associates Web Services)通用的网络爬虫。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-24 22:10:12 | 显示全部楼层

062论一只爬虫的自我修养10:安装Scrapy(课件+软件包)(中)

1、到官网安装python2.7
2、打开运行,输入cmd,打开后,输入C:\Python27\python.exe C:\Python27\tools\Scripts\win_add2path.py
3、重启打开cmd,输入命令“python -version”
如果有显示python2.7.9则说明安装成功
如果没有重启系统尝试一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-25 22:04:44 | 显示全部楼层

062论一只爬虫的自我修养10:安装Scrapy(下)

本帖最后由 摆渡终极鉴黄师 于 2017-12-26 18:51 编辑

安装pip
在cmd里输入python get-pip.py
然后和之前步骤一样
并依次安装lxml,OpenSSL,Scrapy
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-26 18:53:49 | 显示全部楼层

063论一只爬虫的自我修养11:Scrapy框架之初窥门径

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-12-27 19:45:22 | 显示全部楼层

064GUI的终极选择:Tkinter(上)

本帖最后由 摆渡终极鉴黄师 于 2017-12-30 14:15 编辑

import tkinter as tk


app = tk.Tk()   #   实例化一个Tk用于容纳整个程序
app.title("FishC Demo")     #   设置Ta的标题栏

theLabel = tk.Label(app, text="我的第二个窗口程序!")     #   设置Label组件,主要用于显示文本,图标和图片
theLabel.pack()     #   这里的pack方法可以理解为用于自动调节组件自身的尺寸和位置

app.mainloop()  #   窗口的主事件循环,进入了之后就由tkinter接管一切,例如用户点一个按钮,然后tkinter感受到这个按钮被点到了,那么Ta就会调用你为这个按钮安排好的方法,由这个tkinter来调用你函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-28 21:52:50 | 显示全部楼层

064GUI的终极选择:Tkinter(下)

本帖最后由 摆渡终极鉴黄师 于 2017-12-30 14:15 编辑

import tkinter as tk

class APP:
    def __init__(self, master):
        frame = tk.Frame(master)
        frame.pack(side=tk.LEFT, padx=10, pady=10)    #   pack方法会自动调整你的位置,默认的话会调整到最上面top

        self.hi_there = tk.Button(frame, text="打招呼", bg="black", fg="white", command=self.say_hi)
        self.hi_there.pack()

    def say_hi(self):
        print("互联网的广大朋友们大家好,我是jC!")


root = tk.Tk()
app = APP(root)

root.mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-30 14:45:31 | 显示全部楼层

065GUI的终极选择:Tkinter2(上)

from tkinter import *

root = Tk()

textLabel = Label(root,
                  text="您所下载的影片含有未成年人限制内容,\n请满18周岁后再点击观看!",
                  justify=LEFT,
                  padx=10)
textLabel.pack()

photo = PhotoImage(file="18.gif")    #   只要实例化这个PhotoImage就可以得到一个图片对象
imgLabel = Label(root, image=photo)
imgLabel.pack()

mainloop()  #   需要mainloop进入事件循环才会显示
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-31 23:57:24 | 显示全部楼层

065GUI的终极选择:Tkinter2(中)

本帖最后由 摆渡终极鉴黄师 于 2018-1-1 02:12 编辑

from tkinter import *

root = Tk()

photo = PhotoImage(file="bg.gif")
theLabel = Label(root,
                 text="学 Python\n到 FishC",
                 justify=LEFT,
                 image=photo,
                 compound=CENTER,
                 fg="white")
theLabel.pack()

mainloop()

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-1 13:45:23 | 显示全部楼层

065GUI的终极选择:Tkinter2(下)

from tkinter import *

def callback():
    var.set("下载链接:XXXXXX")


root = Tk()


frame1 = Frame(root)
frame2 = Frame(root)


var = StringVar()                #        tkinter的字符串变量
var.set("您所下载的影片含有未成年人限制的内容,\n请满18周岁后再点击观看!")        #        var的一个方法set,用于设置这个变量的内容
textLabel = Label(frame1,
                  textvariable=var,
                  justify=LEFT)
textLabel.pack(side=LEFT)

photo = PhotoImage(file="18.gif")
imgLabel = Label(frame1, image=photo)
imgLabel.pack(side=RIGHT)

theButton = Button(frame2, text="我已满18周岁", command=callback)
theButton.pack()

frame1.pack(padx=10, pady=10)
frame2.pack(padx=10, pady=10)


mainloop()
bbs.fishc.com/thread-59087-1-1.html
bbs.fishc.com/thread-59124-1-1.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-2 08:05:23 | 显示全部楼层

066GUI的终极选择:Tkinter3(上)

from tkinter import *


root = Tk()


v = IntVar()    #   默认情况下,v就会赋值为0,↓选中了,就会赋值为1


c = Checkbutton(root, text="测试", variable=v)   #   用来表示按钮的状态是否被按下
c.pack()

I = Label(root, textvariable=v)  #   如果要赋值一个变量的东西可以用到textvariable,v是用来存放这个Checkbutton的选中状态   
I.pack()


mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-3 21:47:29 | 显示全部楼层

066GUI的终极选择:Tkinter3(上2)

本帖最后由 摆渡终极鉴黄师 于 2018-1-6 13:48 编辑

from tkinter import *

root = Tk()

GIRLS = ["西施", "貂蝉", "史绪"]

v = []

for girl in GIRLS:
    v.append(IntVar())
    b = Checkbutton(root, text=girl, variable=v[-1])
    b.pack()

mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-4 23:07:32 | 显示全部楼层

066GUI的终极选择:Tkinter3(中)

本帖最后由 摆渡终极鉴黄师 于 2018-1-6 13:28 编辑

from tkinter import *

root = Tk()

v = IntVar()

Radiobutton(root, text="One", variable=v, value=1).pack(anchor=W)        #        选了1,Ta们的值一对比,1对应1,不对应2,3,显示对应的按钮
Radiobutton(root, text="Two", variable=v, value=2).pack(anchor=W)
Radiobutton(root, text="three", variable=v, value=3).pack(anchor=W)

mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-6 13:46:46 | 显示全部楼层

066GUI的终极选择:Tkinter3(下)

本帖最后由 摆渡终极鉴黄师 于 2018-1-7 12:32 编辑

from tkinter import *

root = Tk()

group = LabelFrame(root, text="最喜欢的甜食是?", padx=5, pady=5)
group.pack(padx=10, pady=10)

LANGS = [
    ("冰淇淋", 1),
    ("巧克力", 2),
    ("苹果派", 3),
    ("蛋糕", 4)]


v = IntVar()

for lang, num in LANGS:
    b = Radiobutton(group, text=lang, variable=v, value=num)
    b.pack(anchor=W)

mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-7 12:42:41 | 显示全部楼层

067GUI的终极选择:Tkinter4(上)

from tkinter import *


root = Tk()

e = Entry(root)
e.pack(padx=20, pady=20)

e.delete(0, END)    #   输入框内容清空
e.insert(0, "www.fishc.com")    #   序号0,插入


mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-8 19:24:34 | 显示全部楼层

067GUI的终极选择:Tkinter4(中)

本帖最后由 摆渡终极鉴黄师 于 2018-1-9 18:26 编辑

from tkinter import *

root = Tk()

Label(root, text="作品:").grid(row=0, column=0)   #   第0行第一列
Label(root, text="作者:").grid(row=1, column=0)

e1 = Entry(root)
e2 = Entry(root)
e1.grid(row=0, column=1, padx=10, pady=5)
e2.grid(row=1, column=1, padx=10, pady=5)

def show():
    print("作品:《%s》" % e1.get())
    print("作品:%s" % e2.get())

Button(root, text="获取信息", width=10, command=show)\
             .grid(row=3, column=0, sticky=W, padx=10, pady=5)   #   放左边
Button(root, text="退出", width=10, command=root.quit)\   
             .grid(row=3, column=1, sticky=E, padx=10, pady=5)   #   放右边,#   调用root.quit就可以退出了
mainloop()

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-20 03:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表