都是特别基础的实例,每个用例都有他的意义。例子来源:《中国大学慕课》,北京理工大学嵩天老师的,Python爬虫课程。看这篇文章之前,最好看一下Requests库的详细介绍。Python爬虫入门——Requests库
1.爬取京东商品页面的框架
import requests
url="https://item.jd.com/100004706522.html"
try:
r=requests.get(url)
r.raise_for_status() #检查返回状态码是否为200
r.encoding=r.apparent_encoding #选择正确编码方式
print(r.text[:1000]) #因为页面代码比较多,所以这里就只选择性的输出
except:
print("error")
2. 爬取亚马逊商品页面的框架
亚马逊商品页面的爬取,如果按照上边的京东案例,会报错。因为亚马逊对爬虫做了限制,就是请求报文头中的User-Agent字段。所以我们要对User-Agent字段进行改变。
import requests
url = "https://www.amazon.cn/dp/B00J7E381S?ref_=Oct_DotdV2_PC_2_GS_DOTD_f0f9ddb1&pf_rd_r=269HMTWP7R5ZPFRGY17V&pf_rd_p=8c48638a-3752-448a-8685-5a17153fb132&pf_rd_m=A1AJ19PSB66TGU&pf_rd_s=desktop-2"
try:
kv = {'user-agent':'Mozilla/5.0'} #更改请求报文头部信息
r=requests.get(url,headers=kv)
print(r.request.headers) #打印请求头
r.raise_for_status()
r.encoding=r.apparent_encoding
print(r.text)
except:
print("爬取失败")
3. 百度搜索关键词提交
修改params参数提交关键词
百度的关键词接口:http://www.baidu.com/s?wd=keyword
360的关键词接口:http://www.so.com/s?q=keyword
import requests
keyword = "Python"
try:
kv = {'wd':keyword}
r = requests.get("http://www.baidu.com/s",params=kv)
print(r.request.url) #发送的url地址
r.raise_for_status()
print(len(r.text)) #长度
except:
print("爬取失败")
4.图片的爬取和存储
结合os库和文件操作的使用。包括视频、文件、图片等,都可以用类似的方法来获取。
import requests
import os
url = "https://image.ijq.tv/201501/31/13-57-25-65-12.jpg"
root = "E:/pics/"
path = root+url.split('/')[-1] #文件名默认是:URL最后一个‘/’后面的东西
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:
#wb含义:以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,
#并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
f.write(r.content)
f.close()
print("文件保存成功")
else:
print("文件已存在")
except :
print("爬取失败")
5.IP查询
import requests
url ="http://m.ip138.com/ip.asp?ip="
try:
r=requests.get(url+'202.204.80.112') #这里填写你想要查询的IP地址
r.raise_for_status()
r.encoding=r.apparent_encoding
print(r.text[-500:]) #最后500个
except :
print("爬取失败")
6.总结
requests.get()方法获取的实际上就是页面的html代码。你可以随便打开一个网页,右击,点击查看网页源代码。Requests库只是简单的获取网页信息,下面将要讲解获取信息之后,如何提取自己想要的内容。
还在上学阶段,才疏学浅,文章如有不当之处,还请多多指教~~ (●′ω`●)