鱼C论坛

 找回密码
 立即注册
查看: 2331|回复: 7

[技术交流] Requests库5个入门案例展示

[复制链接]
发表于 2017-8-29 19:11:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 TommyTimfy 于 2017-8-31 23:16 编辑

注:
本帖系鄙人在别处学习总结得来,但是符合小甲鱼老师的笔记规矩。
尊重下版权注明下出处:中国大学MOOC,Python网络爬虫与信息的获取
均在IDLE上运行即可。


  1. # 爬取京东页面的内容

  2. import requests
  3. url = 'https://item.jd.com/4938568.html?cpdad=1DLSUE#crumb-wrap'
  4. try:
  5.     r = requests.get(url)
  6.     r.raise_for_status()      # if not 200, raise HTTPError,表示只有200时才是正常获取的
  7.     r.encoding = r.apparent_encoding   
  8.     # r.encoding 从HTTP header中猜测的响应内容编码方式
  9.     # r.apparent_encoding  从内容中分析出的响应内容编码方式(备选编码方式)  
  10.     print(r.text[:1000])      # 只是展示下是否成功获得内容,因此只打印前1000个字符
  11. except:
  12.     print("Error Occurred")
复制代码


第二个例子是亚马逊网站,若采用上述方法,则会出现“意外错误”。这里需要修改下user-agent,改为Mozilla/5.0,就可以访问了
  1. # 爬取亚马逊页面的内容

  2. import requests

  3. url = 'https://item.jd.com/4938568.html?cpdad=1DLSUE#crumb-wrap'
  4. try:

  5.     kv = {'user-agent':'Mozilla/5.0'}   # 修改访问的header
  6.     r = requests.get(url, headers = kv)
  7.     r.raise_for_status()                # if not 200, raise HTTPError
  8.     r.encoding = r.apparent_encoding
  9.     print(r.text[:1000])
  10. except:
  11.     print("Error Occurred")
复制代码


百度的关键词接口:https://www.baidu.com/s?wd=keyword
这里我们尝试返回输入Python时的内容。
  1. # 百度搜索关键词提交

  2. import requests
  3. url = 'https://www.baidu.com/s'  # 需查看具体的网页
  4. keyword = "Python"  # 关键词
  5. try:
  6.     kv = {'wd': keyword}
  7.     r = requests.get(url, params = kv)
  8.     print(r.request.url)   # 请求的地址
  9.     r.raise_for_status()   # if not 200, raise HTTPError
  10.     print(len(r.text))      
  11. except:
  12.     print("Error Occurred")
复制代码


这里我们找到了一个可以查询归属地的网站,进去搜了一个之后,了解其格式,为:
http://www.ip138.com:8080/search ... 8&action=mobile,因此代码稍作修改,即可实现:
  1. # 获取ip地址,电话号码归属地查询
  2. # 从网页中查找相应的信息
  3. import requests
  4. url = 'http://www.ip138.com:8080/search.asp?mobile='
  5. try:
  6.     r = requests.get(url + '18808080808' + '&action=mobile' )
  7.     r.raise_for_status() # if not 200, raise HTTPError
  8.     r.encoding = r.apparent_encoding
  9.     print(len(r.text))
  10.     print(r.text[3000:4000]) # 保证IDLE的使用
  11. except:
  12.     print("Error Occurred")
复制代码


网络图片的爬取:
思路:用到了os模块的一些命令,若没有指定的文件夹,则会创建文件夹,并在其中保存图片。
  1. # 网页图片爬取,并保存其在网页上的图片名
  2. import requests
  3. import os

  4. url = 'http://img0.dili360.com/rw14/ga/M02/33/7C/wKgBzFSbqQyAJVAuAARB8cSWH_w695.tub.jpg'
  5. root = "E://XXX//XXX"              # 根目录地址,自己定一个
  6. path = root + url.split('/')[-1]    # 完整路径+图片名

  7. try:
  8.     if not os.path.exists(root):
  9.         os.mkdir(root)           # 创建单层目录
  10.     if not os.path.exists(path):
  11.         r = requests.get(url)
  12.         with open(path, 'wb') as f:
  13.             f.write(r.content)   # 默认二进制形式写入文件
  14.             f.close()
  15.             print("Saved successfully!")
  16.     else:
  17.         print("The file already exists.")
  18. except:
  19.     print("Error Occurred")
复制代码

评分

参与人数 1鱼币 +3 收起 理由
小甲鱼 + 3

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-8-29 19:15:23 | 显示全部楼层
谢谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-29 19:16:36 | 显示全部楼层
with是默认关闭的不用写close
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2017-8-29 20:33:01 | 显示全部楼层
ド゛゜范 发表于 2017-8-29 19:16
with是默认关闭的不用写close

哈哈多谢提醒
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-29 21:46:16 | 显示全部楼层
能不能写注释,不是很懂一些函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-30 15:01:45 | 显示全部楼层
新手·ing 发表于 2017-8-29 21:46
能不能写注释,不是很懂一些函数

请问是在评论里写吗?或者可以直接修改帖子吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-30 16:50:16 | 显示全部楼层
TommyTimfy 发表于 2017-8-30 15:01
请问是在评论里写吗?或者可以直接修改帖子吗?

修改呗,我觉得挺好的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-31 23:17:13 | 显示全部楼层
新手·ing 发表于 2017-8-30 16:50
修改呗,我觉得挺好的

啊,回复晚了,我做好补充了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 19:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表