一、背景

近期在学习爬虫,利用Requests模块获取页面,BeautifulSoup来获取需要的内容,最后利用xlsxwriter模块讲内容保存至excel,在此记录一下,后续可举一反三,利用其抓取其他内容持久和存储到文件内,或数据库等。

二、代码

编写了两个模块,geturl3和getexcel3,最后在main内调用

git源码地址

geturl3.py代码内容如下:

#!/bin/env python
# -*- coding:utf-8 -*-
# @Author  : kaliarchimport requests
from bs4 import BeautifulSoupclass get_urldic:#获取搜索关键字def get_url(self):urlList = []first_url = 'https://blog.51cto.com/search/result?q='after_url = '&type=&page='try:search = input("Please input search name:")page = int(input("Please input page:"))except Exception as e:print('Input error:',e)exit()for num in range(1,page+1):url = first_url + search + after_url + str(num)urlList.append(url)print("Please wait....")return urlList,search#获取网页文件def get_html(self,urlList):response_list = []for r_num in urlList:request = requests.get(r_num)response = request.contentresponse_list.append(response)return response_list#获取blog_name和blog_urldef get_soup(self,html_doc):result = {}for g_num in html_doc:soup = BeautifulSoup(g_num,'html.parser')context = soup.find_all('a',class_='m-1-4 fl')for i in context:title=i.get_text()result[title.strip()]=i['href']return resultif __name__ == '__main__':blog = get_urldic()urllist, search = blog.get_url()html_doc = blog.get_html(urllist)result = blog.get_soup(html_doc)for k,v in result.items():print('search blog_name is:%s,blog_url is:%s' % (k,v))

getexcel3.py代码内容如下:

#!/bin/env python
# -*- coding:utf-8 -*-
# @Author  : kaliarchimport xlsxwriterclass create_excle:def __init__(self):self.tag_list = ["blog_name", "blog_url"]def create_workbook(self,search=" "):excle_name = search + '.xlsx'#定义excle名称workbook = xlsxwriter.Workbook(excle_name)worksheet_M = workbook.add_worksheet(search)print('create %s....' % excle_name)return workbook,worksheet_Mdef col_row(self,worksheet):worksheet.set_column('A:A', 12)worksheet.set_row(0, 17)worksheet.set_column('A:A',58)worksheet.set_column('B:B', 58)def shell_format(self,workbook):#表头格式merge_format = workbook.add_format({'bold': 1,'border': 1,'align': 'center','valign': 'vcenter','fg_color': '#FAEBD7'})#标题格式name_format = workbook.add_format({'bold': 1,'border': 1,'align': 'center','valign': 'vcenter','fg_color': '#E0FFFF'})#正文格式normal_format = workbook.add_format({'align': 'center',})return merge_format,name_format,normal_format#写入title和列名def write_title(self,worksheet,search,merge_format):title = search + "搜索结果"worksheet.merge_range('A1:B1', title, merge_format)print('write title success')def write_tag(self,worksheet,name_format):tag_row = 1tag_col = 0for num in self.tag_list:worksheet.write(tag_row,tag_col,num,name_format)tag_col += 1print('write tag success')#写入内容def write_context(self,worksheet,con_dic,normal_format):row = 2for k,v in con_dic.items():if row > len(con_dic):breakcol = 0worksheet.write(row,col,k,normal_format)col+=1worksheet.write(row,col,v,normal_format)row+=1print('write context success')#关闭exceldef workbook_close(self,workbook):workbook.close()if __name__ == '__main__':print('This is create excel mode')

main.py代码内容如下:

#!/bin/env python
# -*- coding:utf-8 -*-
# @Author  : kaliarchimport geturl3
import getexcel3#获取url字典
def get_dic():blog = geturl3.get_urldic()urllist, search = blog.get_url()html_doc = blog.get_html(urllist)result = blog.get_soup(html_doc)return result,search#写入excle
def write_excle(urldic,search):excle = getexcel3.create_excle()workbook, worksheet = excle.create_workbook(search)excle.col_row(worksheet)merge_format, name_format, normal_format = excle.shell_format(workbook)excle.write_title(worksheet,search,merge_format)excle.write_tag(worksheet,name_format)excle.write_context(worksheet,urldic,normal_format)excle.workbook_close(workbook)def main():url_dic ,search_name = get_dic()write_excle(url_dic,search_name)if __name__ == '__main__':main()

三、效果展示

运行代码,填写搜索的关键字,及搜索多少页

查看会生成一个以搜索关键字命名的excel,打开写入的内容

利用其就可以搜索并保持自己需要的51CTO推荐博客,可以多搜索几个

转载于:https://blog.51cto.com/kaliarch/2067103

利用Python搜索51CTO推荐博客并保存至Excel相关推荐

  1. 51CTO推荐博客、博客之星名单【2014年】

    2014年每月博客之星.推荐博客名单: 1-2月 . 3月 . 1-2月 zhenliang8,handsome7038,菜菜光,murongqingqqq,qq414207614,kneight,z ...

  2. python csdn博客_利用Python抓取CSDN博客

    这两天发现了一篇好文章,陈皓写的makefile的教程,具体地址在这里<跟我一起写makefile> 这篇文章一共分成了14个部分,我看东西又习惯在kindle上面看,感觉一篇一篇地复制成 ...

  3. Python爬虫入门教程:博客园首页推荐博客排行的秘密

    1. 前言 虽然博客园注册已经有五年多了,但是最近才正式开始在这里写博客.(进了博客园才知道这里面个个都是人才,说话又好听,超喜欢这里...)但是由于写的内容都是软件测试相关,热度一直不是很高.看到首 ...

  4. python教程是用什么博客写的-Python爬虫入门教程:博客园首页推荐博客排行的秘密...

    1. 前言 虽然博客园注册已经有五年多了,但是最近才正式开始在这里写博客.(进了博客园才知道这里面个个都是人才,说话又好听,超喜欢这里...)但是由于写的内容都是软件测试相关,热度一直不是很高.看到首 ...

  5. 推荐一部python教程_Python爬虫入门教程:博客园首页推荐博客排行的秘密

    1. 前言 虽然博客园注册已经有五年多了,但是最近才正式开始在这里写博客.(进了博客园才知道这里面个个都是人才,说话又好听,超喜欢这里...)但是由于写的内容都是软件测试相关,热度一直不是很高.看到首 ...

  6. Python爬虫-博客园首页推荐博客排行(整合词云+邮件发送)

    1.前提: 总体思路,利用多线程(mutiSpider)爬取博客园首页推荐博客,根据用户名爬取该用户的阅读排行榜(TopViewPosts),评论排行榜(TopFeedbackPosts),推荐排行榜 ...

  7. python脚本监控网站状态 - 赵海华_运维之路 - 51CTO技术博客

    python脚本监控网站状态 - 赵海华_运维之路 - 51CTO技术博客 python脚本监控网站状态 2013-01-09 09:21:02 标签:监控 python 原创作品,允许转载,转载时请 ...

  8. python之syslog学习 - 坏男孩 - 51CTO技术博客

    python之syslog学习 - 坏男孩 - 51CTO技术博客 python之syslog学习 - 坏男孩 - 51CTO技术博客 python之syslog学习 2010-04-22 17:47 ...

  9. 如何利用 GitHub 从零开始搭建一个博客

    趁着周末,搭建了一下 NightTeam 的官方博客和官方主页,耗时数个小时,两个站点终于完工了. 由于 NightTeam 的域名是 nightteam.cn,所以这里官方博客使用了二级域名 blo ...

最新文章

  1. Cacti 显示自定义的 SNMP 数据
  2. 9.2.4 .net core 通过ViewComponent封装控件
  3. Dao层系列-4-Hibernate Spring Annotation
  4. eslint 配置_前端代码规范配置 (一)
  5. React Native之函数作为参数传递给另外一个函数去调用
  6. 使用storm 实时计算_使用Storm进行可扩展的实时状态更新
  7. epoll的两种模式
  8. sublime text3常用的一些快捷键
  9. app接口服务器请求为什么会报错307_Vue接口代理和数据Mock,你会了吗
  10. 公文写作与计算机应用,德阳市事业单位《计算机应用和公文写作》真题.doc
  11. 模版 ----- 整数二分
  12. java 多项式拟合最多的项数_MATLAB绘制带置信区间的拟合曲线
  13. 服务器怎么装虚拟打印机,pdfFactory pdf虚拟打印机安装使用教程[图文]
  14. iOS 16适配屏幕旋转强制转屏切换大总结
  15. 修改title旁边的小图标
  16. 国外Windows主机的特点
  17. Tensorflow使用object_detetcion安装教程
  18. 【赠书】熊德意老师的一部不止于技术的神经机器翻译“百科全书”
  19. Fluent API
  20. JS函数的参数(arguments)的使用

热门文章

  1. ADO.NET Entity Framework Beta2(五)/快速入门(实体框架)
  2. python匹配中文
  3. Linux 查看I/O端口地址分配
  4. windows下mysql安装配置启动
  5. BZOJ1444: [Jsoi2009]有趣的游戏(Trie图,矩乘)
  6. ubuntu网卡问题
  7. serialVersionUID的作用(转)
  8. 2_常用样式-border
  9. XidianOJ 1146 万神的竞赛
  10. 2016年11月2日——jQuery源码学习笔记