《Python网络爬虫与信息提取》第一周 网络爬虫之规则 学习笔记(三)Requests库爬取实例

目录

三、Requests库爬取实例

1、实例1:京东商品页面的爬取

2、实例2:亚马逊商品页面的爬取

3、实例3:百度/360搜索关键词提交

4、实例4:网络图片的爬取和存储

5、实例5:IP地址归属地的自动查询


三、Requests库爬取实例

1、实例1:京东商品页面的爬取

# 实例1:京东商品页面的爬取
import requests

r = requests.get("http://item.jd.com/2967929.html")
r.status_code
print(r.status_code)
r.encoding  # 编码。
print(r.encoding)
r.text[:1000]  # 爬取前1000个字符。
print(r.text[:1000])

# 全代码
import requests

url = "http://item.jd.com/2967929.html"
try:
    r = requests.get(url)
    r.raise_for_status()
    r.encoding = r.apparent_encoding
    print(r.text[:1000])
except:
    print("爬取失败")

2、实例2:亚马逊商品页面的爬取

# 实例2:亚马逊商品页面的爬取
import requests

r = requests.get("http://www.amazon.cn/gp/product/B01M8L5Z3Y")
r.status_code
print(r.status_code)
r.encoding  # 编码。
print(r.encoding)
r.encoding = r.apparent_encoding
r.text
print(r.text)
r.request.headers  # 获取页面头部信息。
print(r.request.headers)

kv = {'user-agent': 'Mozilla/5.0'}  # 标准的浏览器身份标识
url = "http://www.amazon.cn/gp/product/B01M8L5Z3Y"
r = requests.get(url, headers=kv)  # 模拟浏览器访问
r.status_code
print(r.status_code)
r.request.headers  # 获取页面头部信息。
print(r.request.headers)
r.text[:1000]  # 爬取前1000个字符。
print(r.text[:1000])

# 全代码
import requests

url = "http://www.amazon.cn/gp/product/B01M8L5Z3Y"
try:
    kv = {'user-agent': 'Mozilla/5.0'}  # 标准的浏览器身份标识
    r = requests.get(url, headers=kv)  # 模拟浏览器访问
    r.raise_for_status()
    r.encoding = r.apparent_encoding
    print(r.text[1000:2000])
except:
    print("爬取失败")

3、实例3:百度/360搜索关键词提交

搜索引擎关键词提交接口:

①百度的关键词接口: http://www.baidu.com/s?wd=keyword

②360的关键词接口: http://www.so.com/s?q=keyword

# 实例3:百度/360搜索关键词提交
import requests

kv = {'wd': 'Python'}
r = requests.get("http://www.baidu.com/s", params=kv)
r.status_code
print(r.status_code)
r.request.url
print(r.request.url)
len(r.text)
print(len(r.text))

# 百度搜索全代码
import requests

keyword = "Python"
try:
    kv = {'wd': keyword}
    r = requests.get("http://www.baidu.com/s", params=kv)
    print(r.request.url)
    r.raise_for_status()
    print(len(r.text))
except:
    print("爬取失败")

# 360搜索全代码
import requests

keyword = "Python"
try:
    kv = {'q': keyword}
    r = requests.get("http://www.so.com/s", params=kv)
    print(r.request.url)
    r.raise_for_status()
    print(len(r.text))
except:
    print("爬取失败")

4、实例4:网络图片的爬取和存储

网络图片链接的格式:http://www.example.com/picture.jpg

国家地理:http://www.nationalgeographic.com.cn/

选择一个图片Web页面:http://www.nationalgeographic.com.cn/photography/photo_of_the_day/3921.html

# 实例4:网络图片的爬取和存储
import requests

path = "./photo/abc.jpg"
url = "http://image.nationalgeographic.com.cn/2017/0211/20170211061910157.jpg"
r = requests.get(url)
r.status_code
print(r.status_code)
with open(path, 'wb') as f:
    f.write(r.content)
f.close()

# 图片爬取全代码
import requests
import os

url = "http://image.nationalgeographic.com.cn/2017/0211/20170211061910157.jpg"
root = "H://python//Web crawler//photo//"
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)  # r.content表示返回内容的二进制形式,图片是以二进制形式存储的。
            f.close()
            print("文件保存成功")
    else:
        print("文件已存在")
except:
    print("爬取失败")

5、实例5:IP地址归属地的自动查询

IP查询:http://m.ip138.com/ip.asp?ip=ipaddress

备注:网页(http://m.ip138.com/ip.asp?ip=ipaddress)连接失败,请读者更换成自己的网页。

# 实例5:IP地址归属地的自动查询
# import requests
# 
# url = "http://m.ip138.com/ip.asp?ip=ipaddress"
# r = requests.get(url + '202.204.80.112')
# r.status_code
# print(r.status_code)
# r.text[-500:]
# print(r.text[-500:])
# 
# # IP地址查询全代码
# import requests
# 
# url = "http://m.ip138.com/ip.asp?ip=ipaddress"
# try:
#     r = requests.get(url + '202.204.80.112')
#     r.raise_for_status()
#     r.encoding = r.apparent_encoding
#     print(r.text[-500:])
# except:
#     print("爬取失败")

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章