(七)通過 selenium 模擬瀏覽器爬取 JS 動態(tài)內(nèi)容

一、爬取今日頭條新聞

為什么要這么爬請看 獲取JS動態(tài)內(nèi)容
既然 selenium 能模仿瀏覽器的行為杆麸,那么我們直接用這個庫來爬取網(wǎng)頁,肯定也是很簡單的事情寞宫。缺點就是既然是模擬瀏覽器行為株灸,那速度是比直接用 json 請求慢得多
那我們可以寫出爬取代碼了崇摄。這里用 css selecter 定位

>>> from selenium import webdriver
>>> driver = webdriver.PhantomJS()
>>> driver.get('http://www.toutiao.com/')
>>> for i in driver.find_elements_by_css_selector('#carouselList > ul > li> a > img'):
    print(i.get_attribute("src"))

    
http://p1.pstatp.com/origin/18a1001128770b4c8365
http://p3.pstatp.com/origin/178100075f23a040ecb5
http://p1.pstatp.com/origin/18a300112cfd26c2c6df
http://p9.pstatp.com/origin/18a5001110bbcae17326
http://p3.pstatp.com/origin/1781000760173eb00269
http://p3.pstatp.com/origin/17810007602775eb7d1d
>>> for i in driver.find_elements_by_css_selector('#carouselList > ul > li> a'):
    print(i.get_attribute("href"))

    
http://www.toutiao.com/group/6399973251997040897/
http://www.toutiao.com/group/6399911996251357442/
http://www.toutiao.com/group/6400082968694440194/
http://www.toutiao.com/group/6399868819300778242/
http://www.toutiao.com/group/6400084033762705666/
http://www.toutiao.com/group/6399915188623343874/

>>> for i in driver.find_elements_by_css_selector('#carouselList > ul > li > a > p'):
    print(i.text)

    



他是上帝送給球迷的足球精靈 37歲生日快樂


>>> len(driver.find_elements_by_css_selector('#carouselList > ul > li > a > p'))
6
>>> 

出現(xiàn)了個問題,圖片和新聞的 url 鏈接我們成功爬取到了慌烧,但標題 title 6個卻只顯示了一個逐抑。嘗試了幾種定位方法,結(jié)果還是一樣屹蚊。
把 page_source 傳進 BeautifulSoup厕氨,倒是可以。
有空再接著研究是哪出問題了

二汹粤、爬取今日頭條美女圖片

接著向上篇一樣命斧,來爬取今日頭條圖片

>>> from selenium import webdriver
>>> driver = webdriver.PhantomJS()
>>> driver.get('http://www.toutiao.com/search/?keyword=%E7%BE%8E%E5%A5%B3')
>>> a = driver.find_elements_by_class_name('J_title')
>>> len(a)
20
>>> for i in a:
    print(i.text)

    
氣質(zhì)美女,優(yōu)雅長裙嘱兼,貴婦風范
青澀少女甜美乖萌牛仔背帶裙
高雅清麗国葬,超氣質(zhì)女神
攝影:有一種可遠觀而不可褻玩焉
溫婉優(yōu)雅女子窈窕無雙居家美照
氣質(zhì)卷發(fā)允兒淡雅迷人
三位可愛的 氣質(zhì)非凡 顏值較高 楚楚風韻 你喜歡哪一個
時尚美女愛攝影,不開美顏相機算我服
醉愛你妹——那無比清純白嫩可口的妹妹
白裙飄飄伊人若仙子
人像攝影:原來穿旗袍還是短發(fā)更耐看
別人的單眼皮
17黑色系 永遠是人們心中的大愛
「人像攝影」短裙黑絲 混血氣質(zhì)小魔女
攝影:可愛小清新與熟女的對決芹壕,你選誰勝出汇四?
攝影:憂郁惹人憐惜的
棚拍旗袍
T瘋子攝影:90后清純可愛的
席地而坐,隨性的姑娘有氣質(zhì)
美艷至極靚妹
>>> b =driver.find_elements_by_class_name('img-wrap')
>>> for i in b:
    print(i.get_attribute('href'))

    
http://www.toutiao.com/group/6399967413135884545/
http://www.toutiao.com/group/6399875937064272129/
http://www.toutiao.com/group/6399511749808095746/
http://www.toutiao.com/group/6399741308898132225/
http://www.toutiao.com/group/6400243707849244930/
http://www.toutiao.com/group/6400238927080390914/
http://www.toutiao.com/group/6399718234816741633/
http://www.toutiao.com/group/6399832980781629697/
http://www.toutiao.com/group/6399866594214904066/
http://www.toutiao.com/group/6399716443810496769/
http://www.toutiao.com/group/6400085128462516482/
http://www.toutiao.com/group/6400180716161253633/
http://www.toutiao.com/group/6399949700431003905/
http://www.toutiao.com/group/6399936693873737986/
http://www.toutiao.com/group/6399757089493025025/
http://www.toutiao.com/group/6399803425404436738/
http://www.toutiao.com/group/6399716046782431489/
http://www.toutiao.com/group/6399712965301715202/
http://www.toutiao.com/group/6399724047525150977/
http://www.toutiao.com/group/6399723310598799618/

圖片內(nèi)容的鏈接很輕松就獲取到了踢涌,接下去我們只要進去每個網(wǎng)頁通孽,獲取里面的圖片下載鏈接就行了。如果再用 selenium 進去每個網(wǎng)頁去下載圖片睁壁,這效率顯然是很慢的背苦,干脆用 requests 吧。這項小工作在這就不再重復了堡僻,前面我們爬靜態(tài)網(wǎng)頁已經(jīng)做過很多了糠惫。
我們現(xiàn)在來研究下另一個重要的問題,就是如何獲取更多的圖片網(wǎng)頁鏈接钉疫。
在這個網(wǎng)站中硼讽,可以看到只有把瀏覽器拉到底部,才能顯示更多的圖片牲阁。如何做到呢

# 拉到頂部
>>> driver.execute_script("window.scrollBy(0,document.body.scrollTop=0)","")
# 拉到底部
>>> driver.execute_script("window.scrollBy(0,document.body.scrollHeight)","")
>>> driver.execute_script("window.scrollBy(0,document.body.scrollHeight=10000)","")
>>> driver.execute_script("window.scrollBy(0,document.body.scrollTop)","")
>>> import time
>>> time.sleep(3)
>>> b = driver.find_elements_by_class_name('J_title')
>>> len(b)
120

以上是通過 execute——script 執(zhí)行 js 腳本操作固阁。
也可以通過 ActionChains 模擬鼠標操作。
那么每次下拉都可以獲得 20 個圖片網(wǎng)址城菊。
所以總的思路如下

(一)备燃、用 selenium 模擬瀏覽器登陸網(wǎng)頁
(二)、模擬瀏覽器中下拉頁面到底部凌唬,不斷加載更多圖片網(wǎng)址
(三)并齐、在 selenium 定位元素,找出標題及圖片網(wǎng)址
(四)、對每個圖片網(wǎng)址用 requests 請求况褪,提取所有圖片下載鏈接
(五)撕贞、下載圖片

并不是很難,就懶得寫代碼啦

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末测垛,一起剝皮案震驚了整個濱河市捏膨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌食侮,老刑警劉巖号涯,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異锯七,居然都是意外死亡链快,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門眉尸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來久又,“玉大人,你說我怎么就攤上這事效五〉叵” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵畏妖,是天一觀的道長脉执。 經(jīng)常有香客問我,道長戒劫,這世上最難降的妖魔是什么半夷? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮迅细,結(jié)果婚禮上巫橄,老公的妹妹穿的比我還像新娘。我一直安慰自己茵典,他們只是感情好湘换,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著统阿,像睡著了一般彩倚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上扶平,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天帆离,我揣著相機與錄音,去河邊找鬼结澄。 笑死哥谷,一個胖子當著我的面吹牛岸夯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播们妥,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼囱修,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了王悍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤餐曼,失蹤者是張志新(化名)和其女友劉穎压储,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體源譬,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡集惋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了踩娘。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刮刑。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖养渴,靈堂內(nèi)的尸體忽然破棺而出雷绢,到底是詐尸還是另有隱情,我是刑警寧澤理卑,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布翘紊,位于F島的核電站,受9級特大地震影響藐唠,放射性物質(zhì)發(fā)生泄漏帆疟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一宇立、第九天 我趴在偏房一處隱蔽的房頂上張望踪宠。 院中可真熱鬧,春花似錦妈嘹、人聲如沸柳琢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽染厅。三九已至,卻和暖如春津函,著一層夾襖步出監(jiān)牢的瞬間肖粮,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工尔苦, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留涩馆,地道東北人行施。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像魂那,于是被迫代替她去往敵國和親蛾号。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

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