① 京东任意商品信息获取代码框架
import requests
url="https://item.jd.com/5782095.html"
try:
r=requests.get(url)
r.raise_for_status() #如果状态不是200,引发HTTPError异常
r.encoding=r.apparent_encoding
print(r.text[:1000])
except:
print("爬取失败")
② 亚马逊商品爬取 url连接比京东更为复杂 只取代表商品的url信息
https://www.amazon.cn/gp/product/B07BS9BD1H
'
>>> r.request.headers #查看发送信息的requests的头部信息的内容
{'User-Agent': 'python-requests/2.18.4', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}
#爬虫告知服务器,该次请求是由爬虫发起的
更改头部信息 模拟浏览器发送请求
>>> kv={'user-agent':'Mozilla/5.0'}
>>> url='https://www.amazon.cn/gp/product/B07BS9BD1H'
>>> r=requests.get(url,headers=kv)
>>> r.status_code
200
>>> r.request.headers
{'user-agent': 'Mozilla/5.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}
代码框架:
import requests
url="https://www.amazon.cn/gp/product/B07BS9BD1H"
try:
kv={'user-agent':'Mozilla/5.0'}#模拟浏览器 提供请求
r=requests.get(url,headers=kv)
r.raise_for_status() #如果状态不是200,引发HTTPError异常
r.encoding=r.apparent_encoding
print(r.text[1000:2000])
except: print("爬取失败")
③ 搜索引擎关键词提交
搜索引擎关键词提交接口:
百度的关键词接口:http://www.baidu.com/s?wd=keyword
360的关键词接口: http://www.so.com/s?q=keyword
>>> import requests
>>> kv={'wd':'python'}
>>> r=requests.get("http://www.baidu.com/s",params=kv)
>>> r.status_code
200
>>> r.request.url
'http://www.baidu.com/s?wd=python' #查看发给百度的url链接是什么
百度搜索引擎关键词提交代码框架
import requests
keyword="python"
try:
kv={'wd':keyword}
r=requests.get("https://www.baidu.com/",params=kv)
print(r.request.url)
r.raise_for_status()
print(len(r.text)) #仅获取得到的字节数
except:
print("爬取失败")
https://www.baidu.com/?wd=python
2443
同理 360搜索引擎关键词提交代码框架:
import requests
keyword="python"
try:
kv={'q':keyword}
r=requests.get("http://www.so.com",params=kv)
print(r.request.url)
r.raise_for_status()
print(len(r.text))
except:
print("爬取失败")
④ 网络图片的爬取与存储
>>> import requests
>>> path="D:/abc.jpg" #图片的保存地址
>>> url="http://image.ngchina.com.cn/2018/0502/20180502044945364.jpg"
>>> r=requests.get(url)
>>> r.status_code
200
>>> with open(path,'wb')as f:
f.write(r.content)
913906
>>> f.close() #关闭文件
其中 path="D:/abc.jpg"
with open(path,'wb')as f:
打开了一个文件,即存储图片的abc.jpg 并且定义为文件标识符F
将返回的内容写到这个文件中r.content表示返回内容的二进制形式
Response中 r.content(HTTP响应内容的二进制形式 )
代码框架
# 网络图片链接的格式:http://www.example.com/picture.jpg
# 例:http://image.ngchina.com.cn/2018/0502/20180502044945364.jpg
# 将图片原本的名字保存下来 只需将url中最后的图片名字截取下来
import requests
import os
url="http://image.ngchina.com.cn/2018/0502/20180502044945364.jpg"
root="D://pics//" #定义一个根目录
path=root+url.split('/')[-1]
#将文件的路径表示为根目录+url链接的以反斜杠分隔的最后一部分
try:
if not os.path.exists(root): #判断根目录是否存在 如果不存在 则建立这样一个根目录
os.mkdir(root)
if not os.path.exists(path): #判断文件是否存在,当文件不存在则通过requests.get获取
r=requests.get(url)
with open(path,'wb')as f:
f.write(r.content)
f.close()
print("保存成功")
else:
print("文件已存在")
except:
print("爬取失败")
⑤ IP归属地的自动查询
www.ip138.com
通过上述网站提交IP地址的url链接 ↓↓↓
http://www.ip138.com/ips138.asp?ip=ipaddress (211.80.243.138&action=2)
代码框架
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("爬取失败")