爬⾍⼊门实践之使⽤Urllib爬取⽹页
在这个信息爆炸的时代,数据筛选和⼤数据分析是很重要的过程,⽽这⼀过程需要数据源,爬⾍则可以获取⼤量数据源。本⽂则主要对爬取⽹页的过程做⼀个详细的介绍,有助于对爬⾍知识的⼊门。
1.使⽤Urllib爬取⽹页
1.导⼊模块:quest
2.打开并爬取⽹页:quest.urlopen("www.baidu")
3.读取⽹页数据:ad()
4.以写⼊的形式打开本地⼀个⽂件:fhandle = open("C:/Users/carson0408/Desktop/webcrawler/1.html","wb")
5.将data写⼊该⽂件中:fhandle.write(data)
6.关闭⽂件:fhandle.close()
注:如有需要可以将爬取⽹页读取的数据data输出:print(data)
完整代码如下:
quest
file = quest.urlopen("www.baidu")
data = ad()
fhandle = open("C:/Users/carson0408/Desktop/webcrawler/1.html","wb")#定义⼀个⽂件
fhandle.write(data)#将爬取到的⽹页数据写进该⽂件中
fhandle.close()
print(data)
url编码处理查看⽂件1.html
以上是利⽤Urllib爬取⽹页信息的基本步骤,可以通过这种⼿段获取指定URL对应的数据。
2.Get请求实例
上⼀节讲述了通过Urllib来进⾏爬取百度⾸页,那么如果要获取百度某个关键字段信息呢?可以通过Get请求相关规则构造相应URL,然后利⽤上⼀节的步骤即可实现爬⾍。
Http中的Get⽅法会将搜索的关键字信息直接添加进⽹址中,将搜索的关键词赋予⽹址的关键性字段wd,这⾥以搜索Alibaba为例。代码如下:
quest
keywd = "Alibaba"
url="www.baidu/s?wd="+keywd
req = quest.Request(url)
file = quest.urlopen(req)
data = ad()
fhandle = open("C:/Users/carson0408/Desktop/webcrawler/2.html","wb")#定义⼀个⽂件
fhandle.write(data)#将爬取到的⽹页数据写进该⽂件中
fhandle.close()
print(data)
以上代码涉及的步骤如下:
1.根据搜索的关键字构造对应的URL地址,URL地址满⾜Get请求的格式,即"⽹址?字段名1=字段内容1&字段名2=字段内容2",这⾥字段wd=Alibaba,可以结合搜索信息构造URL。
2.通过构造好的URL,创建Request对象:quest.Request(url)
3.通过urlopen()打开构建的Request对象
4.读取Request对象的数据
5.打开本地⽂件,并将数据写⼊⽂件。
运⾏代码,结果如下所⽰,
如上图所⽰,可以通过该⽅法对关键字 进⾏爬取相关信息,但是如果关键字是中⽂字的话,则需要特殊处理,直接搜索会出现编码错误。因此,在对中⽂关键字进⾏爬取时,需要对关键字进⾏编码然后再构造URL。
代码如下:
quest
key="腾讯"
key_code = quest.quote(key)#利⽤这个⽅法进⾏编码
url="www.baidu/s?wd="+key_code#构造URL
quest.Request(url)#构造Request对象
data = quest.urlopen(req).read()#获取爬取的数据
fhandle = open("C:/Users/carson0408/Desktop/webcrawler/3.html","wb")
fhandle.write(data)
fhandle.close()
print(data)
步骤如下:
1.对关键字编码:使⽤quest.quote(key)⽅法对关键词key进⾏编码
2.构造URL
3.构造Request对象
4.获取数据
5.打开本地⽂件并写⼊数据运⾏代码,结果如下:
3.代理服务器的设置
def ip_proxy(proxy_addr,url):
quest
proxy = quest.ProxyHandler({'https':proxy_addr})
opener = quest.build_opener(quest.HTTPHandler)
data = quest.urlopen(url).read()
return data
proxy_addr = "171.41.82.147:9999"
url = "sports.sina/nba/"
data = ip_proxy(proxy_addr,"www.baidu")
fhandle = open("C:/Users/carson0408/Desktop/webcrawler/4.html","wb")#定义⼀个⽂件
fhandle.write(data)#将爬取到的⽹页数据写进该⽂件中
fhandle.close()
print(data)
ip_proxy(proxy_addr,url)函数中,proxy_addr即为代理ip,url则为待访问URL,函数中步骤如下:
1.设置对应的代理服务器信息:quesrt.ProxyHandler({'https':proxy_addr})
2.创建⼀个opener对象:quest.build_opener(quest.HTTPHandler),两个参数,⼀个设置的代理信息,⼀个是HTTPHandler类。
3.将上述opener对象创建成全局默认的opener对象:quest.install_opener(opener)
代理完成后便可根据⼀般爬⾍步骤接着进⾏获取信息。
运⾏代码,并打开本地的⽹页,如下所⽰:
延伸:
如果重复执⾏以上代码之后,就会出现如下报错,那是因为该代理ip被该博客的⽹站服务器屏蔽了。
可以通过使⽤多个代理ip,轮询访问该博客,即可提升访问成功率。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。