循环,当服务器性能不太好的时候,异常更频繁的报,
网页长时间没相应,那么网页超时,当需要自己设置超时的时间值时候,有些网站希望10s作为是否超时标准,timeout值就是10 # file=urllib.request.urlopen("http://yum.iqianyue.com",timeout=1)#设置1s作为判断标准,会出现异常 #如果设置大一些30,则没有产生异常。
import urllib.request
for i in range(1,100):
try:
"""网页长时间没相应,那么网页超时,当需要自己设置超时的时间值时候,有些网站希望10s作为是否超时标准,timeout值就是10
# file=urllib.request.urlopen("http://yum.iqianyue.com",timeout=1)#设置1s作为判断标准,会出现异常
#如果设置大一些30,则没有产生异常。"""
file = urllib.request.urlopen("http://yum.iqianyue.com", timeout=30) # 设置1s作为判断标准,会出现异常
data=file.read()
print(data)
print(len(data))
except Exception as e:
print("异常"+str(e))
get请求,需要注意事项
(1)满足url格式,get字段与内容合适并且URL满足get请求,同时处理参数编码
(2)对应的URL为参数,构建Request对象
(3)通过urlopen()打开构建的request对象
(4)后续处理操作,读取网页内容,写入文件等
#http协议请求,客户端与服务端进行消息传递
#get请求
"""
在浏览器输入关键字,回车,url变化。
https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&tn=baidu
&wd=hello&rsv_pq=f218eac10000df63&rsv_t=3615gHwrY%2FUiWRMS%2Fh3pT5KyEK755vjJ%2F2wKMOK%2BPwDS6uh0nWg%2BI32RUpU
&rqlang=cn&rsv_enter=1&rsv_sug3=7&rsv_sug1=8&rsv_sug7=101
得出,wd=hello,关键词是wd
可以简化为:https://www.baidu.com/s?wd=hello
"""
"""
get请求,需要注意事项
(1)满足url格式,get字段与内容合适并且URL满足get请求,同时处理参数编码
(2)对应的URL为参数,构建Request对象
(3)通过urlopen()打开构建的request对象
(4)后续处理操作,读取网页内容,写入文件等
"""
import urllib.request
keyworld="渴望飞的鱼"
key=urllib.request.quote(keyworld)
url="https://www.baidu.com/s?wd="+key
print(url)
req=urllib.request.Request(url)
data=urllib.request.urlopen(req).read()
fhandle=open('D:/爬虫/抓取文件/2018110205.html','wb')
fhandle.write(data)
fhandle.close()
post请求,注册登陆操作时候,遇到post请求。测试网址:http://www.iqianyue.com/mypost
(1)设置好URL地址,分析页面。(右键——查看页面源码——查看表单部分)
(2)构建表单数据,使用urllib.parse.urlencode对数据进行编码处理
(3)创建Request对象,参数包括URL地址要传数据
(4)使用add_header()添加头信息,模拟浏览器进行爬取
(5)使用urllib.request.urlopen()打开相应的Request对象,完成信息传递
(6)后续处理
"""
post请求,注册登陆操作时候,遇到post请求。测试网址:http://www.iqianyue.com/mypost
(1)设置好URL地址,分析页面。(右键——查看页面源码——查看表单部分)
(2)构建表单数据,使用urllib.parse.urlencode对数据进行编码处理
(3)创建Request对象,参数包括URL地址要传数据
(4)使用add_header()添加头信息,模拟浏览器进行爬取
(5)使用urllib.request.urlopen()打开相应的Request对象,完成信息传递
(6)后续处理
"""
import urllib.request
import urllib
import parse
url="http://www.iqianyue.com/mypost"
#需要对数据进行编码处理
postdata = {
"name":"你是猪",
"pass":"嘻嘻嘻"
}
postdata = urllib.parse.urlencode(postdata).encode('utf-8')
req=urllib.request.Request(url,postdata)
req.add_header("User-Agent"," Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36")
data=urllib.request.urlopen(req).read()
fhandle=open('D:/爬虫/抓取文件/2018110208.html',"wb")
fhandle.write(data)
fhandle.close()
抓取网页代码:
Post Test Page