鱼C论坛

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

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

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

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

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

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

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

# 爬取京东页面的内容

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

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

import requests

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

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

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

import requests
url = 'https://www.baidu.com/s'  # 需查看具体的网页
keyword = "Python"  # 关键词
try:
    kv = {'wd': keyword} 
    r = requests.get(url, params = kv)
    print(r.request.url)   # 请求的地址
    r.raise_for_status()   # if not 200, raise HTTPError
    print(len(r.text))      
except:
    print("Error Occurred")

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

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

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

try:
    if not os.path.exists(root):
        os.mkdir(root)           # 创建单层目录
    if not os.path.exists(path):
        r = requests.get(url)
        with open(path, 'wb') as f:
            f.write(r.content)   # 默认二进制形式写入文件
            f.close()
            print("Saved successfully!")
    else:
        print("The file already exists.")
except:
    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-11-22 14:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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