用selenium爬新浪博客demo

经过一周的爬虫学习,对python的爬虫有了一些了解。写一个小demo记录一下学习成果。

导入selenium包

from selenium import webdriver
# 捕获异常,用于当博客取完之后不报错
from selenium.common.exceptions import NoSuchElementException

自动打开谷歌浏览器

driver = webdriver.Chrome()
# 自动启动谷歌浏览器
main_window = driver.current_window_handle
# 浏览器窗口
url = 'http://blog.sina.com.cn/s/articlelist_5698901077_0_1.html'
# 博客地址
driver.get(url)

对博客进行解析

while True:
    boke_list = driver.find_elements_by_xpath('//div[@class = "articleCell SG_j_linedot1"]')
    # 爬取所有博客放在list里
    print(boke_list)
    try:
        for boke in boke_list:
            # 循环遍历每一篇博客
            title = boke.find_element_by_xpath('.//p/span/a').text
            # 用xpath找到每篇博客题目并输出
            print(title)
            tag_a = boke.find_element_by_xpath('.//p/span/a')
            # 找到文章的详情链接
            tag_a.click()
            # click事件打开详情页
            boke_detail_window = driver.window_handles[-1]
            # 因为详情页,有两个页面,所以找到窗口的最后一个,也就是新打开的那个
            driver.switch_to.window(boke_detail_window)
            # 选中新打开的页面
            content = driver.find_element_by_xpath('.//div[contains(@class, "articalContent")]').text
            # 获取新打开页面里边的博客内容
            print(content)
            driver.close()
            # 关闭页面
            driver.switch_to.window(main_window)
            # 选择主页面,也就是最初的页面
            # blog = bytes(title+content)
            blog = '{title}.txt'.format(title=title)
            with open(blog,'w') as f:
                f.write(content)
            # 以文章标题为名保存为txt文档
    except NoSuchElementException as e:
        print('爬取完毕')
        break

猜你喜欢

转载自blog.csdn.net/EverXerxes/article/details/83626503