Python爬蟲(chóng)第四天:Bs4|jsonpath|selenium庫(kù)

內(nèi)容簡(jiǎn)述:? ? ?? ??? ??

? ??一:Bs4? ? ? ?

? ??二:jsonpath? ? ?? ??

? ??三:selenium庫(kù)? ? ? ??

一:bs4(BeautifulSoup)

1-bs4解析器

? ??概述:

? ?? ? ????和lxml相同點(diǎn):是html和xml解析器,主要功能也是解析和提取數(shù)據(jù)邓线。

? ? ? ? ? ? ? ? ? ? 不同點(diǎn):bs4效率沒(méi)有l(wèi)xml的效率高苍蔬,但其API接口靈活好用

????? 官方文檔: http://beautifulsoup.readthedocs.io/zh_CN/v4.4.0

????? 安裝:pip install bs4

????? 工具對(duì)比:? ?

?? ?? 使用

??????? from bs4 import BeautifulSoup?

????????A-網(wǎng)上文件生成對(duì)象

?????????? ????????soup = BeautifulSoup('網(wǎng)上下載的字符串', 'lxml')

??????? B-本地文件生成對(duì)象

?????????????????? soup =BeautifulSoup(open('bs4_test.html'), 'lxml')

?? 2-bs4解析器規(guī)則:

????? ? 按標(biāo)簽名查找

??????? ?????????soup.a? soup.title??? 注意:只能找到第一個(gè)

????? ? 節(jié)點(diǎn)屬性

??????? ?????????name:獲取標(biāo)簽名的 attrs: 將屬性作為一個(gè)字典返回

????? ? 獲取節(jié)點(diǎn)屬性值(3種方式)

??????? ?????????obj.attrs.get('title') obj.get('title') obj['title']

????? ? 獲取節(jié)點(diǎn)內(nèi)容? ? obj.string?? obj.get_text()

? ? ? 【溫馨提示】

`?????? ????a-如果內(nèi)容中有注釋,string會(huì)獲取到注釋的值洒忧,

? ? ? ? ? ? ? ? get_text()獲取不到注釋內(nèi)容运授,但可以獲取非注釋內(nèi)容

??????????? b-如果內(nèi)容中有標(biāo)簽烤惊,string返回None,get_text()返回文本內(nèi)容吁朦。

? ? ? ? ? ? ? ? 判斷獲取的內(nèi)容是不是注釋的內(nèi)容

??????????????????? if type(obj.string) ==bs4.element.Comment:

??????? 獲取【直接子】節(jié)點(diǎn)

?????????? ????contents?? 返回的是一個(gè)列表 【注】中間有換行符

??????? 獲取【子孫】節(jié)點(diǎn)

?????????? ????descendants? 返回的是一個(gè)生成器??通過(guò)for in進(jìn)行迭代即可

?? 3-bs4解析器-方法

??????? find(返回的是一個(gè)對(duì)象)

?????????? ????find('a')?? 返回第一個(gè)a標(biāo)簽

?????????????? find('a', title='名字')?? find('a',class_='名字')

??????? find_all(返回的是一個(gè)列表)

?????????????? find_all('a')? 查找到所有的a

?????????? ????find_all(['a', 'span'])? 返回所有的a和span

?????????? ????find_all('a', limit=2)? 只找前兩個(gè)a

??????? select(根據(jù)選擇器得到節(jié)點(diǎn)對(duì)象)

?????????? ????【溫馨提示】返回一個(gè)列表柒室,列表中都是對(duì)象,需要進(jìn)行篩選

? ? ? ? ?選擇器:

????????????? 標(biāo)簽選擇器?????標(biāo)簽名:???

????????????? 類選擇器? ? ? ? .類名

????????????? id選擇器? ? ? ? ? #id名?

????????????? 層級(jí)選擇器??標(biāo)簽名 .類名?? #id名 .類名

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 標(biāo)簽名 > .類名 >????#id名

?????????? ?【溫馨提示】中間是空格逗宜,返回子類或者子孫類;中間是>返回直接子類

????????????? 屬性選擇器?input[type="text"]?

????????????????????????radio? checkbox?submit? password? select?option

4-bs4解析器示例: 糗事百科-簡(jiǎn)單獲取(一條數(shù)據(jù))


5-bs4前程無(wú)憂批量爬取:

二:jsonpath(了解)

?? JsonPath是一種信息抽取類庫(kù)雄右,是從JSON文檔中抽取指定信息的工具。

????????????提供多種語(yǔ)言實(shí)現(xiàn)版本纺讲,包括:Javascript,Python擂仍,PHP 和 Java。

????????????JsonPath 對(duì)于 JSON 來(lái)說(shuō)熬甚,相當(dāng)于 XPATH 對(duì)于 XML和HTML

? ?簡(jiǎn)單來(lái)講:解析json字符串逢渔,抽取需要的內(nèi)容。

?? pip安裝:pip install jsonpath

?? JsonPath對(duì)比XPATH:

? ? ? ? BookStore.json文件如下

? ? ? ? ?{"store": {"book": [ {"category":"reference","author":"Nigel Rees","title":"Sayings of the Century","price": 8.95 }, {"category":"fiction","author":"Evelyn Waugh","title":"Sword of Honour","price": 12.99 }, {"category":"fiction","author":"Herman Melville","title":"Moby Dick","isbn":"0-553-21311-3","price": 8.99 }, {"category":"fiction","author":"J. R. R. Tolkien","title":"The Lord of the Rings","isbn":"0-395-19395-8","price": 22.99 } ],"bicycle": {"color":"red","price": 19.95 } }}?

? ? ? ? ? json.loads(): json字符串 ==> python對(duì)象

????????? json.dumps(): python對(duì)象==> json字符串

????? ????json.load():讀取json格式的文本乡括,轉(zhuǎn)化為python對(duì)象

????? ????json.dump():將python對(duì)象寫(xiě)入到文本中

三:selenium庫(kù)-自動(dòng)化測(cè)試工具

? ? ? ? ?Selenium是一個(gè)Web的自動(dòng)化測(cè)試工具, 可根據(jù)我們的指令讓瀏覽器自動(dòng)加載

????????頁(yè)面肃廓,獲取需要的數(shù)據(jù),包括頁(yè)面截屏及判斷網(wǎng)站上某些動(dòng)作是否發(fā)生等等诲泌。

????????自己不帶瀏覽器通常和第三方瀏覽器結(jié)合使用?

????安裝:pip3 install selenium

????官方文檔:http://selenium-python.readthedocs.io/index.html

????????WebDriver:屬于SeleniumAPI盲赊,可以像 BeautifulSoup一樣用來(lái)查找頁(yè)面元素

與頁(yè)面上的元素進(jìn)行交互 (發(fā)送文本、點(diǎn)擊等)敷扫,以及執(zhí)行其他動(dòng)作來(lái)運(yùn)行網(wǎng)絡(luò)爬蟲(chóng)哀蘑。

?? 通過(guò)selenium操作谷歌瀏覽器:

????? 下載操作谷歌瀏覽器驅(qū)動(dòng)的頁(yè)面

??????? ????????http://chromedriver.storage.googleapis.com/index.html

????? 谷歌驅(qū)動(dòng)和谷歌瀏覽器版本之間的映射表

??????? ????????http://blog.csdn.net/huilan_same/article/details/51896672

?? 常見(jiàn)選擇方法:

????????? browser.find_element_by_id()?

????? ????browser.find_elements_by_name()?

????? ????browser.find_elements_by_xpath()???

????? ????browser.find_elements_by_tag_name()?

? ? ? ? ??browser.find_elements_by_css_selector()?

? ? ? ? ? browser.find_elements_by_link_text()

????? ????browser.find_elements_by_class_name()?


四:作業(yè)

?? 1-完成課堂代碼

? ?2-使用selenium打開(kāi)百度==hao123==>點(diǎn)擊==》后退==》再百度帥哥==》

? ? ? 圖片==》前進(jìn)==》后退==》退出

? ?3-分別使用xpath和bs4批量下載糗事百科糗圖里面的內(nèi)容

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市呻澜,隨后出現(xiàn)的幾起案子递礼,更是在濱河造成了極大的恐慌,老刑警劉巖羹幸,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脊髓,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡栅受,警方通過(guò)查閱死者的電腦和手機(jī)将硝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門恭朗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人依疼,你說(shuō)我怎么就攤上這事痰腮。” “怎么了律罢?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵膀值,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我误辑,道長(zhǎng)沧踏,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任巾钉,我火速辦了婚禮翘狱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘砰苍。我一直安慰自己潦匈,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布赚导。 她就那樣靜靜地躺著茬缩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪吼旧。 梳的紋絲不亂的頭發(fā)上寒屯,一...
    開(kāi)封第一講書(shū)人閱讀 49,730評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音黍少,去河邊找鬼。 笑死处面,一個(gè)胖子當(dāng)著我的面吹牛厂置,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播魂角,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼昵济,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了野揪?” 一聲冷哼從身側(cè)響起访忿,我...
    開(kāi)封第一講書(shū)人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎斯稳,沒(méi)想到半個(gè)月后海铆,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡挣惰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年卧斟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了殴边。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡珍语,死狀恐怖锤岸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情板乙,我是刑警寧澤是偷,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站募逞,受9級(jí)特大地震影響蛋铆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜凡辱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一戒职、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧透乾,春花似錦洪燥、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至汉操,卻和暖如春再来,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背磷瘤。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工芒篷, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人采缚。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓针炉,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親扳抽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子篡帕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 一:課程回顧及bs4(BeautifulSoup) 1-bs4解析器 概述: 和lxml相同點(diǎn):是html和xml...
    仙靈兒閱讀 2,449評(píng)論 0 1
  • 上網(wǎng)原理 1、爬蟲(chóng)概念 爬蟲(chóng)是什麼贸呢? 蜘蛛镰烧,蛆,代碼中楞陷,就是寫(xiě)了一段代碼怔鳖,代碼的功能從互聯(lián)網(wǎng)中提取數(shù)據(jù) 互聯(lián)網(wǎng): ...
    riverstation閱讀 8,034評(píng)論 1 2
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)猜谚,斷路器败砂,智...
    卡卡羅2017閱讀 134,626評(píng)論 18 139
  • 用到的組件 1赌渣、通過(guò)CocoaPods安裝 2、第三方類庫(kù)安裝 3昌犹、第三方服務(wù) 友盟社會(huì)化分享組件 友盟用戶反饋 ...
    SunnyLeong閱讀 14,603評(píng)論 1 180
  • BP推導(dǎo)——續(xù) 反向傳播算法 Backpropagation Algorithm (批量)梯度下降法 (batch...
    dataTONG閱讀 158評(píng)論 0 0