爬虫笔记(9/23)-----urllib库的使用

1.读取内容

1)file.read()读取内容的全部,读取到额度内容赋给一个字符串变量

2)file.readline()读取全部内容,读取的内容赋给一个列表变量

3)File.readline()读取文件的一行内容

2.浏览器的模拟

1)修改报头(build_opener()的方法)

import urllib.request
url="爬虫网页"
headers=("User-Agent","随便一个网站f12后找到的信息")
opener=urllib.request.build_opener()
opener.addheaders=[headers]
data=opener.open(url).read()
2)添加报头(add_header())

import urllib.request
url="爬虫网页"
req=urllib.request.Request(url)
req.add_header("User-Agent","随便一个网页f12后找到的信息")
data=urllib.request.urlopen(req).read()
两种方法都是为了避免发生403错误。

2.超时设置

urllib.request.urlopen(要打开的网页,timeout=时间值)
3.http协议请求

1)get请求

·首先网页要是get方式,在网址上可以看到“字段1=字段内容”

·对应的URl为参数,构建request对象

·通过urlopen()打开构建request对象

import urllib.request
url="http://www.baidu.com/s?wd="
key="微微一笑"#中文为了防止出现asscii的错误,所以要用quote
key_code=urllib.request.quote(key)
url_all=url+key_code
req=urllib.request.Request(url_all)
data=urllib.request.urlopen(req).read()
fhandle=open("路径/5.html","wb")
fhandle.write(data)
fhandle.close()
2)post请求
import urllib.request
import urllib.parse
url="http://www.iqianyue.com/mypost/"
postdata=urllib.parse.urlencode({"name":"ceo@iqianyue.com","pass":"aA123456"}).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/49.0.2623.75 Safari/537.36 LBBROWSER')
data=urllib.request.urlopen(req).read()
fhandle=open("路径/6.html","wb")
fhandle.write(data)
fhandle.close()
4.代理服务器

def use_proxy(proxy_add,url):#(代理服务器地址,爬取网页地址)
    import urllib.request
    proxy=urllib.request.ProxyHandler({'http':proxy_addr})#{‘http’:代理服务器地址}
    opener=urllib.request.build_opener(proxy,urllib.request.HTTPHandler)
    urllib.request.install_opener(opener)
    data=urllib.request.urlopen(url).read().decode('utf-8')
    return data
proxy_addr="110.73.41.125:8123"
data=use_proxy(proxy_addr,"http://www.baidu.com")
print(len(data))
5.debuglog
import urllib.request
httphd=urllib.request.HTTPHandler(debuglevel=1)
httpshd=urllib.request.HTTPSHandler(debuglevel=1)
opener=urllib.request.build_opener(httphd,httpshd)
urllib.request.install_opener(opener)
data=urllib.request.urlopen("http://edu.51cto.com")
6.异常处理URLError

1)链接不上服务器2)远程URL不存在3)无网络4)触发了HTTPError

import urllib.request
import urllib.error
try:
    urllib.request.urlopen("http://blog.baidusss.net")
except urllib.error.URLError as e:
    if hasattr(e,"code"):
        print(e.code)
    if hasattr(e,"reason"):
        print(e.reason)





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值