學習資料

2Bangz發表於2020-10-09

在這裡插入圖片描述

import requests
if __name__ == '__main__':
    #step1:指定url
    url='https://www.sogou.com/'
    #step2:發起請求
    #get方法會返回一個響應物件
    res=requests.get(url=url)
    #step3:獲取相應資料.text返回的是以字串形式的
    page=res.text
    print(page)
    #step4:持久化儲存
    with open('./sogou.html','w',encoding='utf-8')as fp:
        fp.write(page)
    print("爬取資料結束")

簡單的網頁採集器 搜尋引擎

import requests
if __name__ == '__main__':
    url='https://www.sogou.com/sie?'
    #處理url攜帶的引數:封裝到字典中
    kw=input('enter a word:')
    param={
        'query':kw
    }
    #對指定url發起的請求是攜帶引數的url是攜帶引數的
    res=requests.get(url=url,params=param)
    passs=res.text
    print(passs)
    fileName=kw+'.html'
    with open(fileName,'w',encoding='utf-8') as fp:
    	fp.write(passs.text)
    print(fileName,'儲存成功!!!!')
    

ps:輸入空姐,則在網頁中搜尋空姐

搞定百度翻譯

ajax 前端區域性重新整理
百度翻譯,是post請求攜帶的引數
響應的是json資料
在這裡插入圖片描述
post請求要攜帶引數
在這裡插入圖片描述
json資料

import requests
import json
if __name__ == '__main__':
    #指定url連結
    post_url='https://fanyi.baidu.com/sug'
    #post請求引數處理(同get請求一致)
    data={
        'kw':'dog'
    }
    # 偽裝一下瀏覽器
    headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0'}
    #請求傳送
    res=requests.post(url=post_url,data=data,headers=headers)
    #獲取響應資料:json()方法返回一個obj(物件)(如果確認響應資料是json型別的,才可以使用JSON)
    dic_obj=res.json()
    print(dic_obj)
    #持久化儲存
    fp=open('./dog.json','w',encoding='utf-8')
    json.dump(dic_obj,fp=fp,ensure_ascii=False)#設定不存在字元模式

ps.可以自定義一個輸入函式

爬取豆瓣電影中的詳細資料

網址:https://movie.douban.com/j/chart/top_list?type=24&interval_id=100%3A90&action=&start=100&limit=20
在這裡插入圖片描述

因為是json非同步載入資料

import requests
import json
if __name__ == '__main__':
    url='https://movie.douban.com/j/chart/top_list'
    param={
        "type": "24",
        "interval_id": "100:90",
        "action": "",
        "start": "1",#從庫中的第幾部電影去取
        "limit": "20",#一次取出的個數
    }
    headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0'}
    req=requests.get(url=url,params=param,headers=headers)
    li_data=req.json()#json返回一個列表
    fp=open('./douban.json','w',encoding='utf-8')
    json.dump(li_data,fp=fp,ensure_ascii=False)#避免出現字元型資料
    print('over!!!')

練習肯德基餐廳查詢

在這裡插入圖片描述
在這裡插入圖片描述

import requests
if __name__ == '__main__':
    url='http://www.kfc.com.cn/kfccda/storelist/index.aspx'
    headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0'}
    param={
        "keyword": "青島",
        "pageIndex": "1",
        "pageSize": "10",
    }
    response=requests.get(url=url,params=param,headers=headers)
    list_data=response.text
    print(list_data)

爬取化妝品管理資訊平臺url=http://scxk.nmpa.gov.cn:81/xk/

在這裡插入圖片描述
在這裡插入圖片描述
因為網頁中有很多連結,每一個id代表一個公司的詳細資料所以要訪問每一個連結
先把所有的id列印出來

import requests
import json
if __name__ == '__main__':
    #批量獲取不同企業的id值
    url='http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsList'
    #引數的封裝
    data={"on":"true",
          "page":"1",
          "pageSize":"15",
          "productName":"",
          "conditionType":"1",
          "applyname":"",
          "applysn":"",}
    headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0'}
    id_list = []  # 儲存企業的id
    json_ids=requests.post(url=url,headers=headers,data=data).json()
    for dic in json_ids['list']:
        id_list.append(dic['ID'])#append字典的新增
    #獲取企業詳情資料
    post_url='http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsById'
    for id in id_list:
        data={
            'id':id
        }
    data_json=requests.post(url=post_url,data=data,headers=headers).json()
    print(data_json,'----------------------------')