Python爬取CSDN博客专家系列——移动开发

简介: 注明:小编亲测,只要把第一部分里面的url修改,即可抓取博客专家里边所有的专家的博客内容和标题,后续小编还会对此代码改进,敬请期待 文章分为两部分:Python爬虫爬取移动开发专家的姓名和博客首页地址,爬取每个专家的所有博客存放在已该专家名字命名的txt文件中 说明:本爬虫主要是采用B...
注明:小编亲测,只要把第一部分里面的url修改,即可抓取博客专家里边所有的专家的博客内容和标题,后续小编还会对此代码改进,敬请期待

文章分为两部分:Python爬虫爬取移动开发专家的姓名和博客首页地址,爬取每个专家的所有博客存放在已该专家名字命名的txt文件中
说明:本爬虫主要是采用BeautifulSoup和少量的正则匹配,在第一部分抓取完毕后需要将文件格式改为ANSI,代码如下:
第一部分:
import urllib2
from bs4 import BeautifulSoup
import sys
reload(sys)
sys.setdefaultencoding("utf-8")

def getPage(href): #伪装成浏览器登陆,获取网页源代码
    headers = {  
        'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'  
    }  
    req = urllib2.Request(  
        url = href ,
        headers = headers  
    )  
    
    content = urllib2.urlopen(req).read()
    return content

def getAll(): #得到所有移动开发专家的姓名和博客首页地址
    url = 'http://blog.csdn.net/mobile/experts.html'
    page=BeautifulSoup(getPage(url))  #得到移动专家首页源代码,并beautifulsoup化
    div = page.find('div',class_='list_3',id='experts')
    for li in div.find_all('li'):
        fp = open('nameAndurl.txt','a')
        fp.write(li.get_text() + '\t' + li.a.get('href') + '\n')

    fp.close()
    
if __name__=="__main__":
    getAll()

第二部分:
#coding:utf-8

import urllib2
from bs4 import BeautifulSoup
import os
import re

def getPage(href): #伪装成浏览器登陆,获取网页源代码
    headers = {  
        'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'  
    }  
    req = urllib2.Request(  
        url = href ,
        headers = headers  
    )  
    
    content = urllib2.urlopen(req).read()
    return content

def getOneAllBlog():
    fp=open('nameAndurl.txt','r')
    while True:
        line = fp.readline().strip()
        if line:
            name = line.split('\t')[0]  #拆分读出的一行第一个为name
            href = line.split('\t')[1]  #拆分读出的一行第二个为href
            getBlog(name,href)
        else:
            break

def getPageNum(href):
    num =0
    page = getPage(href)
    soup = BeautifulSoup(page)
    div = soup.find('div',class_='pagelist')
    result = div.span.get_text().split(' ')
    list_num = re.findall("[0-9]{1}",result[3])
    for i in range(len(list_num)):
        num = num*10 + int(list_num[i]) #计算总的页数
    return num

def getText(name,url):
    page = BeautifulSoup(getPage(url))
    span_list = page.find_all('span',class_='link_title')
    div_list = page.find_all('div',class_='article_description')
    k =0
    str1 = 'none'
    fp = open("%s.txt" % name,"a")
    # 获取文章内容和内容
    for div in div_list:
        title = span_list[k].a.get_text().strip()
        text = div.get_text()
        title = title.encode('utf-8')  #转换成utf-8编码,否则后文写不到文件里
        text = text.encode('utf-8')
        print title
        k+=1
        fp.write(str(title) + '\n' + str(text) + '\n')
        fp.write('===========================================' + '\n')
        
    fp.close()

def getBlog(name,href):
    i =1
    for i in range(1,(getPageNum(href)+1)):
        url = href + '/article/list/' + str(i)
        print url
        getText(name,url)
        i+=1
    print url,'======================================OK'

    
if __name__=='__main__':
    getOneAllBlog()

结果如下图:


相关文章
|
7月前
|
数据安全/隐私保护 Python
python之自动化进入CSDN
python之自动化进入CSDN
56 0
|
7月前
|
存储 C语言 索引
Python 语法及入门 (超全超详细) 专为Python零基础 一篇博客让你完全掌握Python语法
本文全面介绍了Python的基础知识,包括Python的诞生背景、为什么学习Python、Python的应用场景、Python环境的安装、Python的基础语法、数据类型、控制流、函数以及数据容器的使用方法,旨在为Python零基础读者提供一篇全面掌握Python语法的博客。
1560 1
Python 语法及入门 (超全超详细) 专为Python零基础 一篇博客让你完全掌握Python语法
|
6月前
|
数据采集 JavaScript 程序员
探索CSDN博客数据:使用Python爬虫技术
本文介绍了如何利用Python的requests和pyquery库爬取CSDN博客数据,包括环境准备、代码解析及注意事项,适合初学者学习。
313 0
|
7月前
|
数据采集 设计模式 算法
拥抱变化:从Python新手到专家的旅程
【10月更文挑战第5天】在编程的世界里,Python以其简洁明了的语法和强大的功能库成为了无数开发者的首选语言。本文将带你走进一个Python新手如何一步步成长为专家的故事,探索学习过程中的困惑、挑战以及最终的成就,并通过代码示例揭示学习之旅的关键时刻。
67 2
|
8月前
|
机器学习/深度学习 测试技术 数据处理
KAN专家混合模型在高性能时间序列预测中的应用:RMoK模型架构探析与Python代码实验
Kolmogorov-Arnold网络(KAN)作为一种多层感知器(MLP)的替代方案,为深度学习领域带来新可能。尽管初期测试显示KAN在时间序列预测中的表现不佳,近期提出的可逆KAN混合模型(RMoK)显著提升了其性能。RMoK结合了Wav-KAN、JacobiKAN和TaylorKAN等多种专家层,通过门控网络动态选择最适合的专家层,从而灵活应对各种时间序列模式。实验结果显示,RMoK在多个数据集上表现出色,尤其是在长期预测任务中。未来研究将进一步探索RMoK在不同领域的应用潜力及其与其他先进技术的结合。
258 4
|
9月前
|
安全 数据库 开发者
揭秘!Python Web开发新宠儿Web2py,轻松打造博客竟有如此奥秘?一探究竟!
【8月更文挑战第31天】Web2py是一款全功能的Python Web应用框架,以其简洁、高效和全面的特点脱颖而出。它集成了数据库抽象层、表单处理、模板引擎等模块,使Web开发变得更简单、快速和安全。本文通过构建一个简单的博客应用,详细介绍了Web2py的安装、配置及实际应用,展示了其强大的功能和直观的代码结构,适合希望提高开发效率的开发者。
140 1
|
9月前
|
数据安全/隐私保护 Python
python之自动化进入CSDN
python之自动化进入CSDN
56 1
|
9月前
|
前端开发 搜索推荐 JavaScript
"揭秘!Python高手如何用Sphinx玩转个人博客?从零搭建,美到犯规,技术干货一网打尽,让你的博客秒变网红级存在!"
【8月更文挑战第14天】Sphinx是Python社区中用于编写和技术分享的强大工具,以其易用性和美观的文档输出著称。本文介绍如何用Sphinx打造个性化博客。首先需安装Python、Sphinx及sphinx_rtd_theme主题。接着通过`sphinx-quickstart`命令初始化项目并配置基本选项。在`conf.py`中可自定义博客元信息和主题设置。
189 3
|
8月前
|
机器学习/深度学习 数据挖掘 TensorFlow
从数据小白到AI专家:Python数据分析与TensorFlow/PyTorch深度学习的蜕变之路
【9月更文挑战第10天】从数据新手成长为AI专家,需先掌握Python基础语法,并学会使用NumPy和Pandas进行数据分析。接着,通过Matplotlib和Seaborn实现数据可视化,最后利用TensorFlow或PyTorch探索深度学习。这一过程涉及从数据清洗、可视化到构建神经网络的多个步骤,每一步都需不断实践与学习。借助Python的强大功能及各类库的支持,你能逐步解锁数据的深层价值。
150 0
|
10月前
|
数据采集 Web App开发 存储
Python-数据爬取(爬虫)
【7月更文挑战第24天】
146 7