第一单元爬取实例

一、爬取京东商品页信息

#简单交互式代码
import requests
r=requests.get('https://miaosha.jd.com/#4661884')
print(r.status_code)
print(r.encoding)
print(r.text[:1000])

 

*** 代码框架

#代码框架
import requests
url='https://miaosha.jd.com/#4661884'
try:
    r=requests.get(url)
    r.raise_for_status()
    r.encoding=r.apparent_encoding
    print(r.text[:1000])
except:
    print('爬取失败')

二、实例二亚马逊页面爬取(此类型针对于user-agent:拒绝爬虫的网页)

import requests
r=requests.get('https://www.icourse163.org/learn/BIT-1001870001?tid=1206093223#/learn/content?type=detail&id=1210598249&cid=1212806719&replay=true')
r.status_code#如果返回结果为503,说明访问出现了错误
print(r.encoding)#如果返回的是'ISO-8859-1'则再对其进行编码
r.encoding=r.apparent_encoding
print(r.text[:100])
print('***********************************************************')
print(r.request.headers)

>>>{'User-Agent': 'python-requests/2.21.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}

改进:

#代码框架
import requests
url="https://www.icourse163.org/learn/BIT-1001870001?tid=1206093223#/learn/content?type=detail&id=1210598249&cid=1212806719&replay=true"
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('爬取失败')

>>>{'user-agent': 'Mozilla/5.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}

 

三、百度/360搜索关键词提交

搜索引擎关键词提交

百度的关键词接口:

http://www.baidu.com/s?wd=kryword

360的关键词接口:

http://www.so.com/s?q=keyword

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

 >>>200
http://www.baidu.com/s?wd=python
451760

百度搜索全代码:

#代码框架
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=q)
    print(r.request.url)
    r.raise_for_status()
    print(len(r.text))
except:
    print('爬取失败')

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

网络图片链接的格式:

http://www.example.com/picture.jpg

国家地理:

http://www.nationalgeographic.com.cn/

选择一个图片WEB页面:

http://www.nationalgeographic.com.cn/photography/photo_of_the_day/392.html

http://image.ngchina.com.cn/2019/0406/20190406022805494.jpg

import requests
path='D:\Python36\python项目\MOOC网络爬虫\abc.jpg'
#图片保存到D:\Python36\python项目\MOOC网络爬虫\下并且命名为abc.jpg
url='http://image.ngchina.com.cn/2019/0406/20190406022805494.jpg'
r=requests.get(url)
print(r.status_code)
#已知图片是二进制文件,下面要把爬到的图片保存
#打开文件,该文件就是abc.jpg,把他标记为一个文件标识符f
with open(path,'wb') as f:
    #将返回的内容写到文件中
    f.write(r.content)#r.content表示返回内容的二进制形式
    f.close()

 图片爬取全代码:

将图片按照原来的名字在目录下保存

import requests
import os
url='http://image.ngchina.com.cn/2019/0406/20190406022805494.jpg'
root='D://Python36//python项目//MOOC网络爬虫//'
path=root+url.split('/')[-1]
#这里url.split('/')[-1]==20190406022805494.jpg
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('爬取失败')

 

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

import requests
url='http://m.ip138.com/ip.asp?ip='
r=requests.get(url+'202.204.80.112')
print(r.status_code)
r.text[-500:]

 IP地址归属地的自动查询全代码:

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:])
except:
    print('爬取失败')

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值