成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

手把手教你寫網絡爬蟲(5):PhantomJS實戰

開發 后端
從今天開始,我要與大家一起打造一個屬于我們自己的分布式爬蟲平臺,同時也會對涉及到的技術進行詳細介紹。大家如果有什么好的想法請多留言,多提意見,一起來完善我們的爬蟲平臺。

本系列:

大家好!從今天開始,我要與大家一起打造一個屬于我們自己的分布式爬蟲平臺,同時也會對涉及到的技術進行詳細介紹。大家如果有什么好的想法請多留言,多提意見,一起來完善我們的爬蟲平臺。在正式介紹平臺之前,先用一些篇幅對基礎篇做一點補充。模擬滾動

這次的目標是爬一個眾籌網站的所有項目,項目列表頁如下:https://www.kaistart.com/project/more.html。打開后進行分析,頁面顯示出10個項目:

如果想看到更多項目,并不能像網易云音樂那樣點“下一頁”翻頁,而是需要向下拉滾動條或者向下滾動鼠標滾輪來觸發異步請求。爬蟲該如何應對這種情況呢?我們可以使用selenium的api執行js代碼將屏幕內容滾動到指定位置。

下面這段代碼會一直向下滾動項目頁,一直到滾不動為止:

 

  1. # 一直滾動到***部  
  2. js1 = 'return document.body.scrollHeight'  
  3. js2 = 'window.scrollTo(0, document.body.scrollHeight)'  
  4. old_scroll_height = 0  
  5. while browser.execute_script(js1) >= old_scroll_height:  
  6.     old_scroll_height = browser.execute_script(js1)  
  7.     browser.execute_script(js2)  
  8.     time.sleep(1) 

scrollTo() 方法可把內容滾動到指定的坐標:

參數 描述
xpos 必需。要在窗口文檔顯示區左上角顯示的文檔的 x 坐標。
ypos 必需。要在窗口文檔顯示區左上角顯示的文檔的 y 坐標。

這里用到了scrollHeight,它和ClientHeight還有OffsetHeight有什么區別呢?

 

  1. browser = webdriver.PhantomJs()  
  2. url = 'https://www.kaistart.com/project/more.html'  
  3. try:  
  4.     browser.get(url)  
  5.     wait = ui.WebDriverWait(browser, 20)  
  6.     wait.until(lambda dr: dr.find_element_by_class_name('project-detail').is_displayed())   
  7.  
  8.     # 一直滾動到***部  
  9.     js1 = 'return document.body.scrollHeight'  
  10.     js2 = 'window.scrollTo(0, document.body.scrollHeight)'  
  11.     old_scroll_height = 0  
  12.     while browser.execute_script(js1) >= old_scroll_height:  
  13.         old_scroll_height = browser.execute_script(js1)  
  14.         browser.execute_script(js2)  
  15.         time.sleep(1)  
  16.     sel = Selector(text=browser.page_source)  
  17.     proj_list = sel.xpath('//li[@class="project-li"]' 

  1. browser.save_screenshot(debug.png')  

這樣就會把圖片保存在項目目錄,打開看看:

 

  1. browser = webdriver.Chrome() 

再次運行程序,不出所料,Chrome瀏覽器彈出來,不僅能夠正確顯示頁面,還一直在滾動:

[[229494]]

項目全都刷出來了,想爬什么就爬吧!什么?你問我在Linux服務器上怎么爬?純命令行的那種嗎?

[[229495]]

 

  1. from selenium import webdriver  
  2. from pyvirtualdisplay import Display   
  3.  
  4. display = Display(visible=0, size=(800, 600))  
  5. display.start()  
  6. driver = webdriver.Chrome()  
  7. driver.get("http://www.baidu.com" 
  8. print (driver.page_source.encode('utf-8'))  
  9. driver.quit()  
  10. display.stop() 

 

 

責任編輯:龐桂玉 來源: Python開發者
相關推薦

2018-05-16 13:50:30

Python網絡爬蟲Scrapy

2018-05-22 15:30:30

Python網絡爬蟲分布式爬蟲

2018-05-14 15:27:06

Python網絡爬蟲爬蟲架構

2018-05-14 16:34:08

Python網絡爬蟲Scrapy

2018-05-22 16:28:46

Python網絡爬蟲URL去重

2018-05-14 14:02:41

Python爬蟲網易云音樂

2020-07-10 08:24:18

Python開發工具

2023-03-27 08:28:57

spring代碼,starter

2021-01-30 10:37:18

ScrapyGerapy網絡爬蟲

2011-01-10 14:41:26

2025-05-07 00:31:30

2011-05-03 15:59:00

黑盒打印機

2021-07-14 09:00:00

JavaFX開發應用

2011-02-22 13:46:27

微軟SQL.NET

2021-02-26 11:54:38

MyBatis 插件接口

2021-12-28 08:38:26

Linux 中斷喚醒系統Linux 系統

2021-11-09 09:01:36

Python網絡爬蟲Python基礎

2021-04-01 09:02:38

Python小說下載網絡爬蟲

2009-12-24 13:52:57

網絡接入控制解決方案

2021-06-22 10:43:03

Webpack loader plugin
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 免费一级欧美在线观看视频 | 91免费在线视频 | 黄色精品 | 国产精品美女久久久 | 精品国产一区二区三区日日嗨 | 久精品久久 | 三级黄色大片网站 | 久久高清国产 | 99精品久久久 | www.久| 成人精品一区二区三区中文字幕 | 成人在线视频观看 | 成人欧美一区二区三区黑人孕妇 | 亚洲高清视频在线 | 伊人久久综合 | 毛片免费在线观看 | 欧美高清视频 | 色爱综合网| 久久99精品久久久 | 国产一区二区三区在线 | 韩日视频在线观看 | 久久99精品国产自在现线小黄鸭 | 国产良家自拍 | 日韩精品视频在线 | 日韩中文字幕在线视频观看 | 国产成人精品久久二区二区 | 精品免费国产 | 天天爽一爽 | 瑟瑟免费视频 | 国产精品久久久久久婷婷天堂 | 久久久人成影片一区二区三区 | 欧美在线视频一区二区 | 欧美一级片在线 | 成人av一区二区三区 | 天天搞天天搞 | 黄色一级特级片 | 久久国产视频播放 | 成人精品一区 | 成人性视频免费网站 | 精品乱码一区二区 | av网站在线播放 |