示例1:向百度/360搜索引擎提交关键字并爬取搜索页面
百度的关键字接口:http://www.baidu.com/s?wd=keyword
360的关键字接口:http://www.so.com/s?q=keyword
keyword指定搜索关键字。
import requests
def getHTMLText(url,kv):
try:
r = requests.get(url,params=kv,timeout=30) //params参数指定query参数
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return "出现异常"
url = "http://www.baidu.com/s" //注意
kv = {'wd':'Python'}
print(getHTMLText(url,kv))
也可以直接在url的query参数上指定。
import requests
def getHTMLText(url):
try:
r = requests.get(url,timeout=30)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return "出现异常"
sv = "Python"
url = "http://www.baidu.com/s?wd=" + sv
print(getHTMLText(url))
示例2:网络图片的爬取和存储
网络图片连接的格式:http://www.example.com/picture.jpg
要爬取图片,即相当于爬取一个文件,则需要指定文件在你的本地计算机上存储的位置。
import requests
def getPicture(url,path):
try:
r = requests.get(url)
r.raise_for_status
with open(path,'wb') as f: #写入path路径下的本地存储内
f.write(r.content) #注意这里是centent,即二进制文件,不是text
print("爬取成功!")
except:
return "爬取失败!"
path = "picture.jpg" #注意这里的本地路径的表示格式
url = "http://pic1.win4000.com/wallpaper/2019-08-26/5d63a0b93ebc5.jpg"
getPicture(url,path)
注意:在上面这个例子中,爬取的图片只能存储在当前你这个.py文件所在的目录内,一旦你给path指定分级目录,爬取就会失败,且Python解释器不会给你提示报错。
如果你想在其它目录下存储,可参照如下写法:
import requests
import os
def getPicture(url,root,path):
try:
if not os.path.exists(root): #判断该目录是否存在
os.mkdir(root) #os下的mkdir()方法用于创建一个分级目录
if not os.path.exists(path): #如果不存在该图片路径,即表示还未下载
r = requests.get(url)
r.raise_for_status
with open(path,'wb') as f:
f.write(r.content)
print("爬取成功!")
else:
print("文件已存在!")
except:
print("爬取失败!")
root = 'D:/picture/'
url = "http://pic1.win4000.com/wallpaper/2019-08-26/5d63a0b93ebc5.jpg"
path = root + url.split('/')[-1] #给每个图片命名为url中的该图片名称
getPicture(url,root,path)