爬虫MOOC 第一周 入门
来源:互联网 发布:扫鬼软件下载 编辑:程序博客网 时间:2024/06/12 19:07
讲师:嵩天
第一步 安装测试Request库
# -*- coding:utf-8 -*-import requestsr = requests.get("http://www.baidu.com")# requests 是 Response对象,包含了爬虫返回的内容# get 是 Request对象print r.status_code # 200 表示链接上了,404 表示失败r.encoding = 'utf-8'print r.textPython
===========================================================================
======================================================================================
上 http://www.jd.com/robots.txt
可以看见 robots 协议。
robots 协议一定在网站根目录。
User-agent: * #任何来源的爬虫Disallow: /?* #任何爬虫都不能访问 ?* 数据Disallow: /pop/*.html #任何爬虫都不能访问 /pop/*.html, 其中 / 表示根目录Disallow: /pinpai/*.html?* User-agent: EtaoSpider # 这四种爬虫都不能爬京东的任何资源Disallow: / User-agent: HuihuiSpider Disallow: / User-agent: GwdangSpider Disallow: / User-agent: WochachaSpider Disallow: /
============================================================
实例1:京东爬虫
http://item.jd.com/2967929.html
以这个网页为例子:
# -*- coding:utf-8 -*-import requestsurl = "http://item.jd.com/2967929.html"try: r = requests.get(url) r.raise_for_status() # 如果失败则返回错误,直接跳到 except r.encoding = r.apparent_encoding # 编码方式为自动选择为apparent_encoding # r.encoding = 'GBK' # 这个网页编码是GBK print r.text[:1000] # 前1000个字符except: print("爬取失败")
============================================================
实例2:亚马逊爬虫
https://www.amazon.cn/gp/product/B01M8L5Z3Y亚马逊会拒绝实例1的爬虫,返回错误503,因此要更改一下头部信息。
# -*- coding:utf-8 -*-import requestskv = {'user-agent':'Mozilla/5.0'} #重新定义 user-agent 内容,模拟浏览器url = "https://www.amazon.cn/gp/product/B01M8L5Z3Y"try: r = requests.get(url, headers = kv) r.raise_for_status() # 如果失败则返回错误,直接跳到 except # 亚马逊这里是错误 503 r.encoding = r.apparent_encoding # 编码方式为自动选择为apparent_encoding # r.encoding = '...' # 这个网页编码是... print r.text[:1000] # 前1000个字符except: print("爬取失败")
============================================================================
实例3:百度/360搜索关键词提交
Baidu关键词接口:
http://www.baidu.com/s?wd=keyword
360关键词接口:
http://www.so.com/s?q=keyword
# -*- coding:utf-8 -*-import requestskv = {'wd':'Python'} # 关键词 Pythontry: r = requests.get("http://www.baidu.com/wd", params = kv) # 通过 params 注入关键词 r.raise_for_status() # 如果失败则返回错误,直接跳到 except print r.request.url # 打印 url 发现加入了关键词 print len(r.text) # 打印返回信息的大小except: print("爬取失败")
360同理,我们小小变化一下:
# -*- coding:utf-8 -*-import requestskeyword = 'Python' # 关键词 Pythontry: kv = {'q':keyword} r = requests.get("http://www.so.com/s", params = kv) # 通过 params 注入关键词 r.raise_for_status() # 如果失败则返回错误,直接跳到 except print r.request.url # 打印 url 发现加入了关键词 print len(r.text) # 打印返回信息的大小except: print("爬取失败")
返回的信息都很长,这里就别打印了,看看长度就行了。
===========================================================================
实例4:网络图片的爬取和存储
网络图片链接格式:
http://www.example.com/picture.jpg
实际链接:
http://image.nationalgeographic.com.cn/2017/0211/20170211061910157.jpg
# -*- coding:utf-8 -*-import requestsimport osroot = "C:\Users\Administrator\Desktop\Python\MOOC\ " # 保存在这里url = 'http://image.nationalgeographic.com.cn/2017/0211/20170211061910157.jpg'path = root + url.split('/')[-1] #path 为 root 加上 url中 / 分割的倒数第一部分try: if not os.path.exists(root): # 如果路径不存在 os.mkdit(root) #新建文件夹 if not os.path.exists(path): # 如果文件不存在 r = requests.get(url) with open(path, 'wb') as f: # 打开了一个文件,定义为文件标识符 f f.write(r.content) # 返回的内容 r.content 写入文件中,r.content 是文件的二进制形式 f.close() # 关闭文件 print "Picture have been saved successfully." else: print "Picture already existed."except: print "Fail."
==================================================================================
实例5: IP 地址归属地的自动查询
www.ip138.com
这个网站的 IP 地址输入接口为:
http://m.ip138.com/ip.asp?ip=ipaddress
import requestsurl = 'http://m.ip138.com/ip.asp?ip='try: r = requests.get(url + '202.204.80.112') r.raise_for_status() r.encoding = r.apparent_encoding print r.text[-500:] # 倒数500字节 except: print "Fail."
这个例子的意义在于说明人机交互提交信息都是以url链接的形式提交的。
=======================================================================
- 爬虫MOOC 第一周 入门
- 爬虫MOOC 第二周 入门
- JAVA入门.零基础学Java语言 MOOC 第一周 计算
- MOOC C语言程序设计 第一周编程题
- 第一周:MOOC《新媒体概论》学习笔记+心得
- 【MOOC】数字信号处理-电子科技大学-第一周-数字信号处理的概述
- 中国大学MOOC课程《Python语言程序设计》课后练习第一周
- mooc浙大翁恺java课程第一周作业
- 第一周测验:网络爬虫之规则
- 四周学会爬虫网课.第一周
- 【实习第一周】spring入门
- excel数据入门第一周
- Linux入门第一周心得体会!!
- Mooc爬虫03-BeautifulSoup
- 【菌菌】【C语言MOOC】第一周 逆序的三位数(10分)
- 【MOOC】Python数据分析与展示-北京理工大学-【第一周】数据分析之表示
- MOOC程序设计与算法(二)第一周测验(2017夏季)特殊密码锁
- 第一周-入门训练-序列求和
- cx_Freez打包Python批处理
- leetcode [Maximum Subarray]
- 【Zookeeper】源码分析之服务器(三)
- datetime时间值比较
- java开发C语言模拟器:sizeof函数的实现
- 爬虫MOOC 第一周 入门
- 九度oj1003
- RTMP直播应用与延时分析
- cookie简单实用的使用方法
- 师兄理解的maven
- docker使用lvm卷存储镜像
- js学习记录1
- 常用正则表达式大全 (转)
- deviceone 跨平台开发