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)
getaddrinfo failed
>>>
061论一只爬虫的自我修养9:异常处理(中)
404页面无法找到,ta没办法帮你处理,需要人工进行过滤403请求禁止
401需要进行一个人工验证
这三个比较常见
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'
>>>
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:
062论一只爬虫的自我修养10:安装Scrapy(上)
本帖最后由 摆渡终极鉴黄师 于 2017-12-23 10:23 编辑Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。
062论一只爬虫的自我修养10:安装Scrapy(上2)
Scrapy最初是为了网络抓取所涉及的,也可以应用在API所返回数据(例如Amazon Associates Web Services)通用的网络爬虫。062论一只爬虫的自我修养10:安装Scrapy(课件+软件包)(中)
1、到官网安装python2.72、打开运行,输入cmd,打开后,输入C:\Python27\python.exe C:\Python27\tools\Scripts\win_add2path.py
3、重启打开cmd,输入命令“python -version”
如果有显示python2.7.9则说明安装成功
如果没有重启系统尝试一下
062论一只爬虫的自我修养10:安装Scrapy(下)
本帖最后由 摆渡终极鉴黄师 于 2017-12-26 18:51 编辑安装pip
在cmd里输入python get-pip.py
然后和之前步骤一样
并依次安装lxml,OpenSSL,Scrapy
063论一只爬虫的自我修养11:Scrapy框架之初窥门径
{:10_249:}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来调用你函数
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()
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进入事件循环才会显示
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()
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
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()
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()
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()
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()
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()
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()