马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 TommyTimfy 于 2017-8-31 23:16 编辑
注:
本帖系鄙人在别处学习总结得来,但是符合小甲鱼老师的笔记规矩。
尊重下版权注明下出处:中国大学MOOC,Python网络爬虫与信息的获取
均在IDLE上运行即可。
# 爬取京东页面的内容
import requests
url = 'https://item.jd.com/4938568.html?cpdad=1DLSUE#crumb-wrap'
try:
r = requests.get(url)
r.raise_for_status() # if not 200, raise HTTPError,表示只有200时才是正常获取的
r.encoding = r.apparent_encoding
# r.encoding 从HTTP header中猜测的响应内容编码方式
# r.apparent_encoding 从内容中分析出的响应内容编码方式(备选编码方式)
print(r.text[:1000]) # 只是展示下是否成功获得内容,因此只打印前1000个字符
except:
print("Error Occurred")
第二个例子是亚马逊网站,若采用上述方法,则会出现“意外错误”。这里需要修改下user-agent,改为Mozilla/5.0,就可以访问了# 爬取亚马逊页面的内容
import requests
url = 'https://item.jd.com/4938568.html?cpdad=1DLSUE#crumb-wrap'
try:
kv = {'user-agent':'Mozilla/5.0'} # 修改访问的header
r = requests.get(url, headers = kv)
r.raise_for_status() # if not 200, raise HTTPError
r.encoding = r.apparent_encoding
print(r.text[:1000])
except:
print("Error Occurred")
百度的关键词接口:https://www.baidu.com/s?wd=keyword
这里我们尝试返回输入Python时的内容。# 百度搜索关键词提交
import requests
url = 'https://www.baidu.com/s' # 需查看具体的网页
keyword = "Python" # 关键词
try:
kv = {'wd': keyword}
r = requests.get(url, params = kv)
print(r.request.url) # 请求的地址
r.raise_for_status() # if not 200, raise HTTPError
print(len(r.text))
except:
print("Error Occurred")
这里我们找到了一个可以查询归属地的网站,进去搜了一个之后,了解其格式,为:
http://www.ip138.com:8080/search ... 8&action=mobile,因此代码稍作修改,即可实现:# 获取ip地址,电话号码归属地查询
# 从网页中查找相应的信息
import requests
url = 'http://www.ip138.com:8080/search.asp?mobile='
try:
r = requests.get(url + '18808080808' + '&action=mobile' )
r.raise_for_status() # if not 200, raise HTTPError
r.encoding = r.apparent_encoding
print(len(r.text))
print(r.text[3000:4000]) # 保证IDLE的使用
except:
print("Error Occurred")
网络图片的爬取:
思路:用到了os模块的一些命令,若没有指定的文件夹,则会创建文件夹,并在其中保存图片。# 网页图片爬取,并保存其在网页上的图片名
import requests
import os
url = 'http://img0.dili360.com/rw14/ga/M02/33/7C/wKgBzFSbqQyAJVAuAARB8cSWH_w695.tub.jpg'
root = "E://XXX//XXX" # 根目录地址,自己定一个
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("Saved successfully!")
else:
print("The file already exists.")
except:
print("Error Occurred")
|