码迷,mamicode.com
首页 > 编程语言 > 详细

Python简单爬虫第二蛋!

时间:2018-05-02 21:15:41      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:http   支持   cer   ima   import   服务   size   复习   重点   

第二讲:几个爬取网页的实例

  本讲通过几个实例来讲述一下爬取网页的基本操作,同时也复习一下上节课的内容,相信还记得通用的代码框架吧,本讲还需要用到它,哈哈哈,是不能忘记滴。

  好了,开始!

  第一个实例:

 

 1 ‘‘‘小说爬取‘‘‘
 2 
 3 import requests
 4 
 5  
 6 
 7 def getHTML_Text(url):
 8 
 9     try:
10 
11         r = requests.get(url,timeout = 20)
12 
13         r.raise_for_status() #如果状态不是200,则产生异常
14 
15         r.encoding = r.apparent_encoding
16 
17         return r.text
18 
19     except:
20 
21         return 产生异常
22 
23  
24 
25 if __name__ == __main__:
26 
27 url = http://wanmeishijiexiaoshuo.org/book/9.html
28 
29 #上面是某小说网站的其中一章小说内容
30 
31 print(getHTML_Text(url)[:5000])

 

 

 

 

  让我们来运行一下看看结果:

 技术分享图片

 

技术分享图片

 

  看吧,都是小说的内容,爬下来了吧,懂了操作了吧,简单来说就是输入小说网站的url,然后爬取的框架就能自动爬取下来了。

 

  下面看第二个实例:

 

 1 ‘‘‘亚马逊商场爬取‘‘
 2 
 3 import requests
 4 
 5  
 6 
 7 def getHTML_Text(url):
 8 
 9     try:
10 
11         kv = {‘user-agent‘:‘Mozilla/5.0‘} #headers头信息
12 
13         r = requests.get(url,timeout = 20,headers = kv)
14 
15         r.raise_for_status() #如果状态不是200,则产生异常
16 
17         r.encoding = r.apparent_encoding
18 
19         return r.text
20 
21     except:
22 
23         return ‘产生异常‘
24 
25  
26 
27 if __name__ == ‘__main__‘:
28 
29     url = ‘https://www.amazon.cn/‘
30 
31 print(getHTML_Text(url)[:5000])

 

 

 

  看看运行结果:

技术分享图片

 

  挺乱七八糟的,但是这不是重点,重点是我们获取了全部response的信息,到后面我们会涉及到提取有用的信息,现在先不要着急哈,慢慢来,饭要一口一口吃。

  kv = {‘user-agent‘:‘Mozilla/5.0‘} #headers头信息

  r = requests.get(url,timeout = 20,headers = kv)

  还记得前面提到的get()方法里面的还有几个未提及的参数吗,这里的headers就是其中一个,添加了头信息之后,爬虫会伪装成Mozilla浏览器对目标url发送请求,如果对方服务器是能识别爬虫的,不伪装一下肯能分分钟被拒绝访问,这里我们添加了kv 字典作为头信息,在一定程度上提升了爬虫的能力,哈哈哈,下面看下一个例子。

 

  实例三:

 1 ‘‘‘百度搜索‘‘‘
 2 
 3 import requests
 4 
 5  
 6 
 7 def getHTML_Text(url):
 8 
 9     try:
10 
11         kv = {user-agent:Mozilla/5.0}
12 
13         wd = {wd:北京天气}
14 
15         r = requests.get(url,timeout = 20,params = wd ,headers = kv)
16 
17         r.raise_for_status() #如果状态不是200,则产生异常
18 
19         r.encoding = r.apparent_encoding
20 
21         return r.text
22 
23     except:
24 
25         return 产生异常
26 
27  
28 
29 if __name__ == __main__:
30 
31     url = "http://www.baidu.com/s?"
32 
33     print(getHTML_Text(url)[:5000])

 

 

  看看运行结果:

 技术分享图片

  我#@¥!@%!@#

  冷静一下,再改改:

 1 ‘‘‘百度搜索‘‘‘
 2 
 3 import requests
 4 
 5  
 6 
 7 def getHTML_Text(url):
 8 
 9     try:
10 
11         wd = {wd:北京天气}
12 
13         r = requests.get(url,timeout = 20,params = wd)
14 
15         r.raise_for_status() #如果状态不是200,则产生异常
16 
17         r.encoding = r.apparent_encoding
18 
19         return r.text
20 
21     except:
22 
23         return 产生异常
24 
25  
26 
27 if __name__ == __main__:
28 
29     url = "http://www.baidu.com/s?"
30 
31     print(getHTML_Text(url)[:5000])

 

 

  运行结果:

 技术分享图片

  已经有结果了,原因是那个headers 的参数我们模拟的是Mozilla浏览器,百度的服务器直接拒绝访问了,没事,问题不大,我们注重的是过程,不用这些细节。

  好了,经过上面3个实例,相信对requests.get()方法的使用有更深的理解了吧,最后总结一下get()方法的参数。

参数名

说明

data

字典、字节序列或文件对象,作为Request的内容

json

JSON格式的数据,作为Request的内容

headers

字典,HTTP定制头

cookies

字典或CookieJar,Request中的cookie

auth

元组,支持HTTP认证功能

timeout

设定超时时间,秒为单位

files

字典类型,传输文件

proxies

字典类型,设定访问代理服务器,可以增加登陆认证

allow_redirects

True/False,默认位True,重定向开关

stream

True/False,默认位True,获取内容立即下载开关

verify

True/False,默认位True,认证SSL证书开关

cert

本地SSL证书路径

  这些参数会随着以后的学习逐步深入,本期到此结束。

Python简单爬虫第二蛋!

标签:http   支持   cer   ima   import   服务   size   复习   重点   

原文地址:https://www.cnblogs.com/shuaiqi-XCJ/p/8981975.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!