Datawhale-爬蟲-Task7(實戰大專案)
實戰大專案
模擬登入丁香園,並抓取論壇所有的人員的基本資訊與回覆帖子的內容。
丁香園論壇:論壇登入連結
- 首先使用Selenium模擬登入丁香園論壇。這裡模擬點選登入後若要使用賬號密碼登入還需要模擬點選返回電腦登入
登入程式碼如下:
def login_zhihu(browser):
try:
#點選登入
browser.find_element_by_xpath('//div[@class="nav_account"]/a[1]').click()
#點選返回電腦登入
browser.find_element_by_xpath('//div[@class="login__tab_wp"]/a[2]/i').click()
elem = browser.find_element_by_name("username")
elem.clear() # 清空
elem.send_keys("*******") # 自動填值
#獲取登入密碼
elem = browser.find_element_by_name("password")
elem.clear()
elem.send_keys("****")
print("開始登陸...")
browser.find_element_by_xpath("//button").click() #點選登入按鈕登入
except TimeoutException:
print("Time Out")
except NoSuchElementException:
print("No Element")
- 獲取登陸後的論壇資訊,這邊我使用CSS選擇器爬取相應的資訊,很方便,但是爬取後暫時不知道該怎麼將論壇發言人和他們的發帖內容對應輸出,所以暫時先分開寫了
爬取資訊程式碼:
def get_information(browser):
print("登入成功")
time.sleep(10)
print("開始獲取資訊。。。")
elems = browser.find_elements_by_css_selector(".auth") #發帖人姓名
# conts = browser.find_elements_by_css_selector(".con") 發帖的資訊
for elem in elems:
auth = elem.find_element_by_tag_name("a")
print(auth.text)
# for con in conts:
# content = con.find_element_by_tag_name("td")
# print(content.text)
- 今天在學習的時候還學到了如何載入動態頁面,即使用Selenium讓進度條自動下拉到最底部實現JS的載入,程式碼如下:
def scroll_load(browser):
#利用 execute_script() 方法將進度條下拉到最底部
browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
browser.implicitly_wait(2) # 隱式等待
作業完整程式碼:
from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException, NoSuchElementException
# 宣告瀏覽器物件
browser = webdriver.Chrome()
browser.get("http://www.dxy.cn/bbs/thread/626626#626626")
def login_zhihu(browser):
try:
#點選登入
browser.find_element_by_xpath('//div[@class="nav_account"]/a[1]').click()
#點選返回電腦登入
browser.find_element_by_xpath('//div[@class="login__tab_wp"]/a[2]/i').click()
elem = browser.find_element_by_name("username")
elem.clear() # 清空
elem.send_keys("*****") # 填入你的賬號
#獲取登入密碼
elem = browser.find_element_by_name("password")
elem.clear()
elem.send_keys("********") #填上你的密碼
print("開始登陸...")
browser.find_element_by_xpath("//button").click() #點選登入按鈕登入
except TimeoutException:
print("Time Out")
except NoSuchElementException:
print("No Element")
def get_information(browser):
print("登入成功")
time.sleep(10)
print("開始獲取資訊。。。")
elems = browser.find_elements_by_css_selector(".auth") #發帖人姓名
# conts = browser.find_elements_by_css_selector(".con") 發帖的資訊
for elem in elems:
auth = elem.find_element_by_tag_name("a")
print(auth.text)
# for con in conts:
# content = con.find_element_by_tag_name("td")
# print(content.text)
# 滾動載入
# def scroll_load(browser):
# #利用 execute_script() 方法將進度條下拉到最底部
# browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# browser.implicitly_wait(2) # 隱式等待
# 主函式
def main():
login_zhihu(browser) # 登入函式
#for i in range(2): #定義滾動次數
get_information(browser) # 獲取標題與連結
#scroll_load(browser) # 滾動
time.sleep(1) # 休眠
# 函式入口呼叫
if __name__ == '__main__':
main()
input("按任意鍵退出-> ")
browser.quit()
執行結果(發帖人姓名部分):
相關文章
- 大資料爬蟲專案實戰教程大資料爬蟲
- 爬蟲專案實戰(一)爬蟲
- 爬蟲實戰專案集合爬蟲
- 爬蟲實戰專案合集爬蟲
- Java 爬蟲專案實戰之爬蟲簡介Java爬蟲
- 大型商城網站爬蟲專案實戰網站爬蟲
- Python網路爬蟲實戰專案大全 32個Python爬蟲專案demoPython爬蟲
- python爬蟲實操專案_Python爬蟲開發與專案實戰 1.6 小結Python爬蟲
- python爬蟲-33個Python爬蟲專案實戰(推薦)Python爬蟲
- Python爬蟲開發與專案實戰——基礎爬蟲分析Python爬蟲
- Python爬蟲開發與專案實戰 3: 初識爬蟲Python爬蟲
- Datawhale-爬蟲-Task3(beautifulsoup)爬蟲
- Python網路爬蟲實戰小專案Python爬蟲
- Go語言專案實戰:併發爬蟲Go爬蟲
- Python網路爬蟲實戰專案大全!Python爬蟲
- Python爬蟲開發與專案實戰pdfPython爬蟲
- Python靜態網頁爬蟲專案實戰Python網頁爬蟲
- 爬蟲實戰專案-公眾號:AI悅創爬蟲AI
- Python爬蟲開發與專案實戰(2)Python爬蟲
- Python爬蟲開發與專案實戰(1)Python爬蟲
- 爬蟲專案:大麥網分析爬蟲
- 爬蟲實戰爬蟲
- Python爬蟲入門學習實戰專案(一)Python爬蟲
- Datawhale-爬蟲-Task4(學習xpath)爬蟲
- 網路爬蟲——專案實戰(爬取糗事百科所有文章)爬蟲
- 爬蟲專案爬蟲
- Python3 大型網路爬蟲實戰 — 給 scrapy 爬蟲專案設定為防反爬Python爬蟲
- 網路爬蟲——爬蟲實戰(一)爬蟲
- 32個Python爬蟲實戰專案,滿足你的專案慌Python爬蟲
- 【爬蟲】爬蟲專案推薦 / 思路爬蟲
- 不踩坑的Python爬蟲:Python爬蟲開發與專案實戰,從爬蟲入門 PythonPython爬蟲
- 2019最新《網路爬蟲JAVA專案實戰》爬蟲Java
- 從0到1完成nutch分散式爬蟲專案實戰分散式爬蟲
- Python學習筆記——爬蟲之Scrapy專案實戰Python筆記爬蟲
- Python爬蟲開發與專案實戰--分散式程式Python爬蟲分散式
- Python大型網路爬蟲專案開發實戰(全套)Python爬蟲
- 爬蟲實戰scrapy爬蟲
- Datawhale-爬蟲-Task2(正規表示式)爬蟲