经过一周的爬虫学习,对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