request模塊中的方法

Requests

import requests

url='http://example.test/secret'`

response=requests.get(url,auth=('dan','h0tdish'))`

response.status_code`

200

response.content`

u``'Welcome to the secret page!'

|

只是在調(diào)用方法的時候增加了一個auth關(guān)鍵字函數(shù)
我敢打賭你不用查文檔也能記住。

錯誤處理 Error Handling

Requests對錯誤的處理也是很非常方面。如果你使用了不正確的用戶名和密碼,urllib2會引發(fā)一個urllib2.URLError錯誤,然而Requests會像你期望的那樣返回一個正常的response對象。只需查看response.ok的布爾值便可以知道是否登陸成功。

(https://www.jb51.net/article/63711.htm#)

>>> response = requests.get(url,auth``=``(``'dan'``,``'wrongPass'``))

>>> response.ok

False

|
使用selenium進(jìn)行爬蟲
1、挑選需求爬的URL地址,將其放入需求網(wǎng)絡(luò)爬蟲的隊列,也可以把爬到的符合一定需求的地址放入這個隊列中2、獲取一個url進(jìn)行DNS解析,獲取其主機(jī)IP3、針對這個url地址將其頁面加載下來(也就是這個頁面的html或者jsp)加載下來,不同的框架有不同的頁面處理方法,和抽取有用信息的方法,類似根據(jù)id選擇抽取,根據(jù)標(biāo)簽抽取,根據(jù)class抽取,根據(jù)css抽取等。4、最后Pipeline負(fù)責(zé)抽取結(jié)果的處理,包括計算、持久化到文件、數(shù)據(jù)庫等 在這里我們介紹一種十分方便的爬蟲工具:selenium,selenium爬蟲個人感覺適合對那種需求登錄的頁面進(jìn)行爬取,因為它本身可以加載瀏覽器驅(qū)動,模擬登錄這個操作,然后把需求的靜態(tài)頁面加載進(jìn)來。

  from selenium import webdriver
  import time

 browser = webdriver.Chrome()
  browser = webdriver.Firefox()

 help(webdriver)

加載谷歌瀏覽器驅(qū)動,這里我使用的谷歌,你也可以下載firefox或者ie的驅(qū)動

使用什么驅(qū)動則模擬該操作的就是這個瀏覽器,需要注意的是,chromedriver.exe對不同瀏覽器版本也是有自己版本的

browser = webdriver.Chrome("D:\driver\chromedriver.exe")

這里通過get請求需要模擬登錄的頁面

browser.get("https://crm.xiaoshouyi.com/global/login.action")

print(browser.page_source)

browser.switch_to_frame("page_source")

這里通過name選擇器獲取登錄名和密碼并把需要set值給放進(jìn)去

 browser.find_element_by_name("loginName").send_keys("你的登錄名")
 browser.find_element_by_name("password").send_keys("你的登錄密碼")
這一步模擬點擊登錄
 browser.find_element_by_class_name("pg-btn-submit").click()
 browser.implicitly_wait(10)
 time.sleep(5)

這一步模擬點擊某個a標(biāo)簽連接

hrefs=browser.find_element_by_partial_link_text(u"客戶")
hrefs.click()

 time.sleep(5)

我們可以通過browser.page_source把當(dāng)前頁面的靜態(tài)資源打印出來看看,然后根據(jù)自己需求進(jìn)行提取有用的資源

print(browser.page_source) 現(xiàn)在我們可以看到,我們已經(jīng)把頁面的靜態(tài)資源加載到了browser里面,我們可以開始根據(jù)自己的需求從browser里面拿自己需要的資源了,我這里先簡單介紹一下selenium的使用,有關(guān)其具體選擇器和選擇方法,如下所示:

browser.find_element_by_id("id的name")
browser.find_element("")
browser.find_element_by_tag_name("標(biāo)簽name")
browser.find_element_by_class_name("classname")
browser.find_element_by_css_selector("css選擇器,cssname")
browser.find_element_by_partial_link_text("帶有鏈接的文本,獲取其跳轉(zhuǎn)地址,后面跟click事件可以模擬跳轉(zhuǎn)")


browser.find_element_by_xpath("里面可以跟正則表達(dá)式,XPath一般在實際自動化測試項目中用到比較多,其定位元素十分方便")此處例舉xpath用法:假如一個html是這個樣子的:<html>
<body>
 <form id="myform">
 <input name="name" type="text" />
  <input name="pwd" type="password" />
  <input name="continue" type="submit" value="Login" />
</form>
</body>
<html>我們需要用xpath定位他的pwd:
pwd =browser.find_element_by_xpath("http://form[input/@name='pwd']")---獲取form下input標(biāo)簽中name為pwd的資源
pwd = browser.find_element_by_xpath("http://form[@id='loginForm']/input[2]")---獲取第二個input標(biāo)簽的資源
pwd = browser.find_element_by_xpath("http://input[@name='pwd']")---直接獲取input為pwd的資源

xpat語法與bs4

xpth獲取屬性//a[@class="name"]/@img
      獲取文本//a[@class="name"]/@img/text()

  bs4獲取屬性
   href = site.select('td a')[0].attrs['href']
  獲取文本
   catalog = site.select('td')[1].get_text()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 爬蟲的目標(biāo) 我的目的是爬取某直播網(wǎng)站某一天所有頻道的網(wǎng)絡(luò)流量數(shù)據(jù),每一個頻道有一個自己的頁面,顯示可視化后的流量數(shù)...
    酸辣粉多加辣椒閱讀 3,693評論 0 2
  • selenium用法詳解 selenium主要是用來做自動化測試,支持多種瀏覽器,爬蟲中主要用來解決JavaScr...
    陳_CHEN_陳閱讀 4,026評論 1 5
  • 這篇文章在介紹官網(wǎng)的同時使用了比較多的腳本示例,示例里遇到的問題有部分在本篇文章進(jìn)行了解釋,還有一篇文章專門記錄了...
    顧顧314閱讀 13,083評論 3 32
  • 不知不覺的已是年的尾聲,不得不感嘆時間的飛逝,我們穿梭在生活的記憶里、遠(yuǎn)遠(yuǎn)的奔不過時間和年齡! 去年今日此門中 ,...
    依然淡香閱讀 300評論 0 0
  • 小學(xué)三年級的孩子跟我聊天,冷不丁問了一個非常成熟的問題:“老媽,你們這個時候應(yīng)該是最辛苦的吧”?一個小屁孩竟然會關(guān)...
    白咖啡鐘文萍閱讀 248評論 0 2

友情鏈接更多精彩內(nèi)容