博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python爬虫调用搜索引擎及图片爬取实战
阅读量:4320 次
发布时间:2019-06-06

本文共 2790 字,大约阅读时间需要 9 分钟。

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


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

image

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

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


08D1B5CC03E8487D80D258246C54D765

  • 图片链接的格式,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_code200
  • 现在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()>>>
  • 现在我们去查看我们爬取的结果(是不是很帅!)

BDE7C792C20C40FDA0219CC96C804474

  • 给出完成代码(用图片原本的名称来命名):
import requestsimport osurl = "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网站查询:

1D60ECF0807647E69618BCF607AD4C9B

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

0173F4BB63CB4B5BA99207516C826722

>>> import requests>>> url = "http://m.ip138.com/ip.asp">>> kv = {'ip':'218.106.145.15'}>>> r = requests.get(url,params = kv)>>> r.status_code200>>> r.text[-500:]'submit" value="查询" class="form-btn" />\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t
ip138.com IP查询(搜索IP地址的地理位置)
\r\n\t\t\t\t

您查询的IP:218.106.145.15

本站主数据:福建省福州市 联通

参考数据一:福建省福州市 联通

\r\n\r\n\t\t\t\r\n\t\t\r\n\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\r\n'>>>
  • 给出完整代码:
import requestskv = {'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

转载于:https://www.cnblogs.com/031602523liu/p/9824799.html

你可能感兴趣的文章
转载使用命令wsimport构建WebService客户端
查看>>
java实现23种设计模式之模版方法模式
查看>>
小程序·云开发实战 - 校园约拍小程序
查看>>
闲话函数式变成与OOP
查看>>
Linux-正则表达式与三剑客
查看>>
php中,post与get获取参数的异同
查看>>
警惕!年轻人要拥抱自动化和人工智能作为通信的未来
查看>>
Python给数字前固定位数加零
查看>>
python 多进程和多线程对比
查看>>
【转载】 wpf无边框的方法以及拖拽的问题
查看>>
Web自动化测试 二 ----- HTML
查看>>
sql 入门经典(第五版) Ryan Stephens 学习笔记  第四部分:建立复杂的数据库查询/...
查看>>
[原创]Keys的基本操作总结,判断Keys中是否存在Keys.Control|Keys.Alt,移除Keys中的部分键值。...
查看>>
主题样式之背景图片不随鼠标滑动而移动
查看>>
Centos 中文乱码
查看>>
IDLE常用快捷键
查看>>
MyBatis课程4
查看>>
Git使用笔记
查看>>
Java概述
查看>>
Python数据分析与展示第0&1周学习笔记(北理工 嵩天)
查看>>