5个小栗子

1、京东


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

2、亚马逊(需要修改header模拟浏览器访问)


import requests
r=requests.get("http://www.amazon.cn/gp/product/B01M8L5Z3Y")
print(r.text)

访问出现错误,即亚马逊不让爬虫访问。我们通过

r.request.headers

查看爬虫头部,看到:

{'Connection': 'keep-alive', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'User-Agent': 'python-requests/2.21.0'},说明爬虫忠实地告诉了服务器“我是爬虫,这次访问是由一个python程序完成地”,如果服务器进行来源审查,是可以被发现地。所以我们现在试试用程序模拟浏览器进行访问。

import requests
url="http://www.amazon.cn/gp/product/B01M8L5Z3Y"
try:
    kv={'user-agent':'Mozilla/5.0'}#重新定义user—agent内容,
    #Mozilla5.0是一个很标准的浏览器的身份标识的字段
    r=requests.get(url,headers=kv)
    r.raise_for_status()
    r.encoding=r.apparent_encoding
    print(r.text[1000:2000])
except:
    print("爬取失败")

3、百度搜索关键词提交

百度的关键词接口:http://www.baidu.com/s?wd=keyword,即只要替换keyword。

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

r.status_code
Out[17]: 200

r.request.url
Out[18]: 'http://www.baidu.com/s?wd=Python'  //可以看到,关键词已经被替换

len(r.text)
Out[19]: 425885  //长度

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

图片是二进制格式,需要将二进制格式保存成文件。response中r.content表示返回内容的二进制形式。

import requests
import os 
root="D://abc.jpg"
url="http://image.nationalgeographic.com.cn/2017/0211/20170211061910157.jpg"
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("文件保存成功")
    else:
        print("文件已存在")
except:
    print("爬取失败")

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

利用iP138网站进行查询

import requests
url="http://m.ip138.com/ip.asp?ip="
try:
    r=requests.get(url+'202.204.80.112')
    r.raise_for_status()
    r.encoding=r.apparent_encoding
    print(r.text[-500:])#返回最后500个字,如果太多会崩
except:
    print("爬取失败")

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值