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)

在这里插入图片描述

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