实战三—向搜索引擎提交搜索请求


  • 关键点:利用搜索引擎提供的接口

  • 百度的接口:wd=“要搜索的内容”
  • 360的接口:q=“要搜索的内容”
  • 所以我们只要把我们提交给服务器的url修改成对应的格式,就可以向搜索引擎提交关键字
  • 修改url,第一个想到的就是params参数。只须构造键值对,提交给params即可
  • 键值对前面的代表搜索引擎前面的接口标识,键值对后面的代表我们要搜索的内容。
>>> import requests
>>> kv = {'wd':'python'}
>>> r = requests.get("http://www.baidu.com/s",params=kv)
>>> r.status_code
200
  • response对象中的request对象来查看我们提交给服务器的URL链接
>>> r.request.url
'http://www.baidu.com/s?wd=python'
  • 给出完整代码:
import requests
kv = {'wd':'python'}
url = "http://www.baidu.com/s" try:
r = requests.get(url,params = kv)
print(r.request.url)
r.raise_for_status()
print(r.text[:2000])
except:
print("爬取失败")

实战四—图片的爬取和存储


  • 图片链接的格式,url+xxxx.jpg
  • 给出图片的地址,爬取下来后存放到本机的某一个位置。
>>> import requests
>>> path = "/Users/hyliu/Desktop/picture.jpg"
>>> url = "https://gss3.bdstatic.com/-Po3dSag_xI4khGkpoWK1HF6hhy/baike/c0%3Dbaike80%2C5%2C5%2C80%2C26/sign=3acf58502f7f9e2f6438155a7e598241/7aec54e736d12f2e227c44d647c2d5628535680f.jpg"
>>> r = requests.get(url)
>>> r.status_code
200
  • 现在r中已经包含了我们想要的图片,接下来要做的事情就是把图片变成文件存放到本机。
  • 我们知道图片是一个二进制格式,用如下代码来实现:
>>> path = "/Users/hyliu/Desktop/picture.jpg"
>>> with open(path,'wb') as f:
f.write(r.content) 53658
>>>
  • 这段代码的含义就是,我们先打开一个文件picture.jpg,并定义为一个文件标识符f。然后我们将返回的内容写入到这个文件中。
  • r.content表示返回内容的二进制格式,所以我们将r.content写入到图片文件中。
  • 最后我们将文件关闭
>>> f.close()
>>>
  • 现在我们去查看我们爬取的结果(是不是很帅!)

  • 给出完成代码(用图片原本的名称来命名):
import requests
import os url = "https://gss3.bdstatic.com/-Po3dSag_xI4khGkpoWK1HF6hhy/baike/c0%3Dbaike80%2C5%2C5%2C80%2C26/sign=3acf58502f7f9e2f6438155a7e598241/7aec54e736d12f2e227c44d647c2d5628535680f.jpg"
root = "/Users/hyliu/Desktop/"
path = root + url.split('/')[-1] #获取URL最后一个“/”后的内容,实际上就是获取图片原本的名字
try:
if not os.path.exists(root): #目录不存在则创建
os.mkdir(root)
if not os.path.exists(path): #判断是否存在重名文件
r = requests.get(url)
#print(r.status_code)
r.raise_for_status()
with open (path,'wb') as f:
f.write(r.content)
f.close()
print("文件保存成功!")
else:
print("文件已存在")
except:
print("爬取失败")

实战五—查询IP地址的归属地


  • 借助IP138网站查询:

  • 思路就是像百度和360那样,找到IP138网站的接口信息。

>>> import requests
>>> url = "http://m.ip138.com/ip.asp"
>>> kv = {'ip':'218.106.145.15'}
>>> r = requests.get(url,params = kv)
>>> r.status_code
200
>>> r.text[-500:]
'submit" value="查询" class="form-btn" />\r\n\t\t\t\t\t</form>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class="query-hd">ip138.com IP查询(搜索IP地址的地理位置)</div>\r\n\t\t\t\t<h1 class="query">您查询的IP:218.106.145.15</h1><p class="result">本站主数据:福建省福州市 联通</p><p class="result">参考数据一:福建省福州市 联通</p>\r\n\r\n\t\t\t</div>\r\n\t\t</div>\r\n\r\n\t\t<div class="footer">\r\n\t\t\t<a href="http://www.miitbeian.gov.cn/" rel="nofollow" target="_blank">沪ICP备10013467号-1</a>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<script type="text/javascript" src="/script/common.js"></script></body>\r\n</html>\r\n'
>>>
  • 给出完整代码:
import requests
kv = {'ip':'218.106.145.15'}
url = "http://m.ip138.com/ip.asp"
try:
r = requests.get(url,params = kv)
r.raise_for_status()
print(r.text[-500:])
except:
print("爬取失败")

URL is API

python爬虫调用搜索引擎及图片爬取实战的更多相关文章

  1. Python爬虫学习三------requests+BeautifulSoup爬取简单网页

    第一次第一次用MarkDown来写博客,先试试效果吧! 昨天2018俄罗斯世界杯拉开了大幕,作为一个伪球迷,当然也得为世界杯做出一点贡献啦. 于是今天就编写了一个爬虫程序将腾讯新闻下世界杯专题的相关新 ...

  2. python爬虫实践(二)——爬取张艺谋导演的电影《影》的豆瓣影评并进行简单分析

    学了爬虫之后,都只是爬取一些简单的小页面,觉得没意思,所以我现在准备爬取一下豆瓣上张艺谋导演的“影”的短评,存入数据库,并进行简单的分析和数据可视化,因为用到的只是比较多,所以写一篇博客当做笔记. 第 ...

  3. 初识scrapy,美空网图片爬取实战

          这俩天研究了下scrapy爬虫框架,遂准备写个爬虫练练手.平时做的较多的事情是浏览图片,对,没错,就是那种艺术照,我骄傲的认为,多看美照一定能提高审美,并且成为一个优雅的程序员.O(∩_∩ ...

  4. Python爬虫学习(6): 爬取MM图片

    为了有趣我们今天就主要去爬取以下MM的图片,并将其按名保存在本地.要爬取的网站为: 大秀台模特网 1. 分析网站 进入官网后我们发现有很多分类: 而我们要爬取的模特中的女模内容,点进入之后其网址为:h ...

  5. Python 爬虫实例(1)—— 爬取百度图片

    爬取百度图片  在Python 2.7上运行 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Author: loveNight import jso ...

  6. Python爬虫实例(一)爬取百度贴吧帖子中的图片

    程序功能说明:爬取百度贴吧帖子中的图片,用户输入贴吧名称和要爬取的起始和终止页数即可进行爬取. 思路分析: 一.指定贴吧url的获取 例如我们进入秦时明月吧,提取并分析其有效url如下 http:// ...

  7. Python爬虫教程:验证码的爬取和识别详解

    今天要给大家介绍的是验证码的爬取和识别,不过只涉及到最简单的图形验证码,也是现在比较常见的一种类型. 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻 ...

  8. Python爬虫开源项目代码,爬取微信、淘宝、豆瓣、知乎、新浪微博、QQ、去哪网等 代码整理

    作者:SFLYQ 今天为大家整理了32个Python爬虫项目.整理的原因是,爬虫入门简单快速,也非常适合新入门的小伙伴培养信心.所有链接指向GitHub,祝大家玩的愉快 1.WechatSogou [ ...

  9. Python爬虫初探 - selenium+beautifulsoup4+chromedriver爬取需要登录的网页信息

    目标 之前的自动答复机器人需要从一个内部网页上获取的消息用于回复一些问题,但是没有对应的查询api,于是想到了用脚本模拟浏览器访问网站爬取内容返回给用户.详细介绍了第一次探索python爬虫的坑. 准 ...

随机推荐

  1. Ubuntu 16.04 64位安装YouCompleteMe

    之前记录在OneNote上感觉有点乱,而且不适合保存shell,这次重新安装又出问题了,干脆写篇博客记录. 从零开始 1.git(用来下载vim和相关插件) sudo apt-get install ...

  2. Uncaught (in promise) DOMException: play() failed because the user didn't interact with the document first.

    最近在开发一个网站时,有个需要是 如果有新预警信息要在网页中播放提示音.页面打开会请求是否有新信息,有则播放提示音.在Chrome的最新浏览器中,播放会报错,控制台显示Uncaught (in pro ...

  3. npm run build 时报错operation not permitted

    1.项目使用vue框架,在npm run build 打包时报错: 访问对应的目录,发现无法打开,原来是文件被其他应用程序占用了,仔细看了一下,xftp文件传输的软件打开着,把它关闭以后,重新运行np ...

  4. html input file accept

    *.3gpp audio/3gpp, video/3gpp 3GPP Audio/Video*.ac3 audio/ac3 AC3 Audio*.asf allpication/vnd.ms-asf ...

  5. PHP 变量分页标签页面源代码技术分享

    最近在研究PHP的常规变量的分页源代码.  现在发布一个给大家看一下. defined('IN_DUOAO') or exit('No permission resources.');$smarty ...

  6. Delphi判断某个类是否实现了某个接口

    通过TObject.GetInterface可以获得对象的实例实现某个接口,前提条件是必须实例化对象后才能运行GetInterface 下面的方法可获取类是否实现了某个接口,并返回接口的偏移: fun ...

  7. windbg调试虚拟机XP系统

    一.先介绍一下被调试的虚拟机系统环境: 虚拟机:vmware workstation 10.0版本 虚拟机操作系统: Microsoft windows xp professional 2002 se ...

  8. Python学习:18.Python异常处理

    一.为什么使用异常处理 当程序运行的时候出现了异常,导致程序终止运行,为了解决这种情况,我们需要预先对可能出现的异常进行处理,一旦出现这种异常,就使用另一种方式解决问题,还有就是错误信息是使用者没有必 ...

  9. C语言 经典编程100

    一.题目 [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去掉不满足条件 ...

  10. (数据科学学习手札54)Python中retry的简单用法

    一.简介 retry是一个用于错误处理的模块,功能类似try-except,但更加快捷方便,本文就将简单地介绍一下retry的基本用法. 二.基本用法 retry: 作为装饰器进行使用,不传入参数时功 ...