北京理工大学-Python网络爬虫与信息提取学习笔记03

京东商品

import requests

def getHTMText(url):
    try:
        r=requests.get(url,timeout=30)
        r.raise_for_status() #如果状态不是200,引发HTTPError异常
        r.encoding=r.apparent_encoding
        return r.text
    except:
        return "产生异常"   #通用方法

if __name__=="__main__":  #注意下划线是敲击两次不是一次_
    url="http://www.baidu.com"
    print(getHTMText(url))
    ur2="www.baidu.com"
    print(getHTMText(ur2))

亚马逊商品

import requests
url='https://www.amazon.cn/dp/B073B836F3?ref_=Oct_DLandingS_D_f669e30d_62&smid=A26HDXW89ZT98L'
try:
    #print(r.request.headers)  head部分‘'User-Agent': 'python-requests/2.23.0',被拒绝访问
    kv={
     'user-agent':'Mozilla/5.0'}
    r = requests.get(url, headers=kv)
    print(r.request.headers)
    r.raise_for_status()  # 如果状态不是200,引发HTTPError异常
    r.encoding = r.apparent_encoding
    print(r.text[:1000])
except:
    print("爬取失败")

搜索引擎提交关键词

#百度关键词接口http://www.baidu.com/s?wd=keyword
#360关键词接口http://www.so.com/s?q=keyword
import requests
keyword='panda'
try:
    kv = {
     'q': keyword}
    #kv = {'wd': keyword}
    url='http://www.so.com/s'
    #url='http://www.百度.com/s'
    r=requests.get(url,params=kv)
    print(r.status_code)
    print(r.request.url)  #点击百度的输出网址,会有一个安全验证。360没有
    print(len(r.text))
except:
    print("爬取异常")


网络图片爬取和存储

#网络图片链接的格式:http://www.example.com/picture.jpg

import requests
import os
root='D:/Python/Workspace/爬虫基础/'
url='https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1586789309749&di=ce2746db07b5089a67d10547ed88e8bd&imgtype=0&src=http%3A%2F%2Fb-ssl.duitang.com%2Fuploads%2Fitem%2F201506%2F02%2F20150602134542_wFcS5.jpeg'
#百度搜索出的图片,尾部是jpej,看来也是可以的
#path=root + url.split('/')[-1]
#注意path为保存名称,文件名为网址/分隔的最后一个,即图片名
#但因为图片为.jpeg不符合保存格式,所以会失败
path=root+'abd.jpg'
try:
    if not os.path.exists(root):  #当前根目录是否存在
        os.mkdir(root)
    if not os.path.exists(path):  #文件是否存在
        r=requests.get(url)
        print(r.status_code)
        #将二进制图片保存在文件
        with open(path,'wb') as f:
            f.write(r.content)
            #r.contenr为二进制形式
            print("ok")
            f.close()  #文件关闭
            print("文件保存成功")
    else:
        print("文件已存在")
except:
    print("爬取失败")

ip地址归属地的自动查询

#http://m.ip138.com/ip.asp?ip=ipaddress
import requests
url='http://m.ip138.com/ip.asp?ip='
try:
   r=requests.get(url+'202.204.80.112')
   r.status_code
   r.encoding=r.apparent_encoding
   print(r.text[-500:])
   #选取一个简单的域名,以防访问超时
except:
    print("爬取失败")

ps:学习链接 https://www.icourse163.org/learn/BIT-1001870001?tid=1206951268#/learn/announce

你可能感兴趣的:(python)