一、基本GET請求 1. 最基本的GET請求可以直接用get方法 response = requests.get("http://www.baidu.com/") 2. 添加 headers 和 查詢參數(shù) 如果想添加 headers,可以傳入headers參數(shù)來增加請求頭中的headers信息。如果要將參數(shù)放在url中傳遞,可以利用 params 參數(shù)。 kw = {'wd':'長城'} headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"} # params 接收一個字典或者字符串的查詢參數(shù),字典類型自動轉(zhuǎn)換為url編碼,不需要urlencode() 3.發(fā)起網(wǎng)絡(luò)請求 response = requests.get("http://www.baidu.com/s?", params = kw, headers = headers) 4.# 查看響應(yīng)內(nèi)容,response.text 返回的是Unicode格式的數(shù)據(jù) print( response.text) 二、POST 請求 1. 傳入data數(shù)據(jù) 對于 POST 請求來說,我們一般需要為它增加一些參數(shù)。那么最基本的傳參方法可以利用 data 這個參數(shù)。 formdata = { "type":"AUTO", "i":"i love python", "doctype":"json", "xmlVersion":"1.8", "keyfrom":"fanyi.web", "ue":"UTF-8", "action":"FY_BY_ENTER", "typoResult":"true" } 2.訪問網(wǎng)址 url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=null" 3.設(shè)置headers headers={ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"} 4.發(fā)送post請求 response = requests.post(url, data = formdata, headers = headers) 5.打印 print(response.text) 6.如果是json文件可以直接顯示 print(response.json()) 三、獲取Cookies # 1. 發(fā)送請求 response=requests.get('http://www.baidu.com/') # 2. 返回CookieJar對象: cookiejar=response.cookies print(cookiejar) # 3. 將CookieJar轉(zhuǎn)為字典: cookiedict=requests.utils.dict_from_cookiejar(cookiejar) print(cookiedict) 四、Session(會話) 在 requests 里,session對象是一個非常常用的對象,這個對象代表一次用戶會話:從客戶端瀏覽器連接服務(wù)器開始,到客戶端瀏覽器與服務(wù)器斷開。 會話能讓我們在跨請求時候保持某些參數(shù),比如在同一個 Session 實例發(fā)出的所有請求之間保持 cookie 。 # 1. 創(chuàng)建session對象,可以保存Cookie值 ssion = requests.session() # 2. 處理 headers headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"} # 3. 需要登錄的用戶名和密碼 data = {"email":"12922215**", "password":"huang***521"} # 4. 發(fā)送附帶用戶名和密碼的請求,并獲取登錄后的Cookie值,保存在ssion里 ssion.post("http://www.renren.com/PLogin.do", data = data) # 5. ssion包含用戶登錄后的Cookie值,可以直接訪問那些登錄后才可以訪問的頁面 response = ssion.get("http://www.renren.com/410043129/profile") # 6. 打印響應(yīng)內(nèi)容 soup=BeautifulSoup(response.text,'html.parser') #print(soup) for ss in soup.find_all('span',class_='stage-name'): print(ss.text) 五、獲取所有課程信息 1.先訪問所有課程頁面,把html代碼拿到,實際上就是拿到一個很長的文本,文本內(nèi)容就是網(wǎng)頁的html代碼 2.分析html代碼,找到我們需要獲取信息的html特征 3.解析html代碼,根據(jù)html特征,從里面摳出來課程的名稱 4.打印出所有課程的名稱 from selenium import webdriver import requests from bs4 import BeautifulSoup '''首先要安裝requests庫''' url='http://www./courses' #獲取被抓取頁面的HTML代碼,并使用html.parser來實例化BeautiSoup,屬于固定套路 soup=BeautifulSoup(requests.get(url).text,'html.parser') #遍歷頁面上所有的h4 for course in soup.find_all('h4'): print(course.text) 我們要找到的是所有class=item_hot_topic_title的span下面的a元素 from selenium import webdriver import requests from bs4 import BeautifulSoup '''首先要安裝requests庫''' url='https://www./' #獲取被抓取頁面的HTML代碼,并使用html.parser來實例化BeautiSoup,屬于固定套路 soup=BeautifulSoup(requests.get(url).text,'html.parser') for span in soup.find_all('span',class_='item_hot_topic_title'): print(span.find('a').text,span.find('a')['href']) 相關(guān)知識點 soup.find('span', class_='item_hot_topic_title') 這個是只能找到第一個span標(biāo)簽 樣式為 class='item_hot_topic_title',就算后面還有匹配的也不去獲取 span.find_all('span', class_='item_hot_topic_title') 這個就能找到頁面上所有span標(biāo)簽 樣式為 class='item_hot_topic_title' 來源網(wǎng)絡(luò) |
|