Python爬蟲第四次任務

任務預覽(2天)

4.1實戰大項目:模擬登錄丁香園,並抓取論壇頁面所有的人員基本信息與回覆帖子內容。
注:丁香園論壇:http://www.dxy.cn/bbs/thread/626626#626626
在這裏插入圖片描述
我們可以通過查找<div class= “nav_account”>中的a元素,通過模擬點擊這個按鈕。

login = browser.find_element_by_class_name('nav_account').find_element_by_tag_name('a')
login.click()

跳轉頁面之後
在這裏插入圖片描述
我們可以通過獲取<div class=“login__tab_wp”>中的a標記,通過找第二個a標記,模擬點擊這個按鈕。

login_one = browser.find_element_by_class_name('login__tab_wp').find_elements_by_tag_name('a')
login_one[1].click()

在這裏插入圖片描述
獲取輸入框,使用send_keys()模擬輸入,這裏就不多說直接提供代碼。

name = browser.find_element_by_name('username')
name.send_keys('15779481686')
pwd = browser.find_element_by_name('password')
pwd.send_keys('qwe126386')
login_two = browser.find_element_by_class_name('button')
login_two.click()

在這裏插入圖片描述
登陸的時候會輸驗證碼,但是筆者能力有限,所以不知道到怎麼解決。百度之後,可以通過傳cookie,直接跳過登陸驗證,或者通過超級鷹的提供的api(需要錢)。由於這裏,我們用的是selenium自動化,所以我們人爲輸入。這裏先留個坑,等我學會了,就會來告訴如何實現解決驗證碼的問題。
登陸之後
在這裏插入圖片描述
這個獲取用戶姓名和用戶評論也很簡單。這裏就直接給代碼。

comment_list = browser.find_elements_by_class_name('postbody')
user_list = browser.find_elements_by_class_name('auth')
for i in range(len(comment_list)):
	print('用戶:' + user_list[i].text)
	print('評論是:' + comment_list[i].text.strip())

全部代碼在這裏:

from selenium import webdriver
from time import sleep

def get_html(url):
    browser = webdriver.Chrome()
    browser.get(url)
    browser.maximize_window()
    sleep(5)
    login = browser.find_element_by_class_name('nav_account').find_element_by_tag_name('a')
    login.click()
    sleep(1)
    login_one = browser.find_element_by_class_name('login__tab_wp').find_elements_by_tag_name('a')
    login_one[1].click()
    sleep(5)
    name = browser.find_element_by_name('username')
    name.send_keys('15779481686')
    pwd = browser.find_element_by_name('password')
    pwd.send_keys('qwe126386')
    login_two = browser.find_element_by_class_name('button')
    login_two.click()
    sleep(100)  #手動解決驗證碼問題
    comment_list = browser.find_elements_by_class_name('postbody')
    user_list = browser.find_elements_by_class_name('auth')
    for i in range(len(comment_list)):
        print('用戶:' + user_list[i].text)
        print('評論是:' + comment_list[i].text.strip())


if __name__ == '__main__':
    url = 'http://www.dxy.cn/bbs/thread/626626#626626'
    get_html(url)

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章