iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python爬虫抓取csdn博客
  • 417
分享到

Python爬虫抓取csdn博客

爬虫博客Python 2023-01-31 06:01:09 417人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

        昨天晚上为了下载保存某位csdn大牛的全部博文,写了一个爬虫来自动抓取文章并保存到txt文本,当然也可以 保存到html网页中。这样就可以不用Ctrl+C 和Ctrl+V了,非常方便,抓取别的网站也是大同小异。为了解析抓取的


        昨天晚上为了下载保存某位csdn大牛的全部博文,写了一个爬虫来自动抓取文章并保存到txt文本,当然也可以 保存到html网页中。这样就可以不用Ctrl+C 和Ctrl+V了,非常方便,抓取别的网站也是大同小异。

为了解析抓取的网页,用到了第三方模块,BeautifulSoup,这个模块对于解析html文件非常有用,当然也可以自己使用正则表达式去解析,但是比较麻烦。

由于csdn网站的robots.txt文件中显示禁止任何爬虫,所以必须把爬虫伪装成浏览器,而且不能频繁抓取,得sleep一会再抓,使用频繁会被封ip的,但可以使用代理ip。


#-*- encoding: utf-8 -*-
'''
Created on 2014-09-18 21:10:39

@author: ManGoer
@email: 2395528746@qq.com
'''

import urllib2
import re
from bs4 import BeautifulSoup
import random
import time

class CSDN_Blog_Spider:
     def __init__(self,url):

          print '\n'
          print('已启动网络爬虫。。。')
          print  '网页地址: ' + url

          user_agents = [
                    'Mozilla/5.0 (windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11',
                    'Opera/9.25 (Windows NT 5.1; U; en)',
                    'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .net CLR 1.1.4322; .NET CLR 2.0.50727)',
                    'Mozilla/5.0 (compatible; Konqueror/3.5; linux) KHTML/3.5.5 (like Gecko) (Kubuntu)',
                    'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.12) Gecko/20070731 Ubuntu/dapper-security Firefox/1.5.0.12',
                    'Lynx/2.8.5rel.1 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/1.2.9',
                    "Mozilla/5.0 (X11; Linux i686) AppleWEBKit/535.7 (KHTML, like Gecko) Ubuntu/11.04 Chromium/16.0.912.77 Chrome/16.0.912.77 Safari/535.7",
                    "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:10.0) Gecko/20100101 Firefox/10.0 ",
                   ]
          # use proxy ip 
          # ips_list = ['60.220.204.2:63000','123.150.92.91:80','121.248.150.107:8080','61.185.21.175:8080','222.216.109.114:3128','118.144.54.190:8118',
          #           '1.50.235.82:80','203.80.144.4:80']

          # ip = random.choice(ips_list)
          # print '使用的代理ip地址: ' + ip

          # proxy_support = urllib2.ProxyHandler({'Http':'http://'+ip})
          # opener = urllib2.build_opener(proxy_support)
          # urllib2.install_opener(opener)

          agent = random.choice(user_agents)

          req = urllib2.Request(url)
          req.add_header('User-Agent',agent)
          req.add_header('Host','blog.csdn.net')
          req.add_header('Accept','*/*')
          req.add_header('Referer','http://blog.csdn.net/mangoer_ys?viewmode=list')
          req.add_header('GET',url)
          html = urllib2.urlopen(req)
          page = html.read().decode('gbk','ignore').encode('utf-8')

          self.page = page
          self.title = self.getTitle()
          self.content = self.getContent()
          self.saveFile()
          

     def printInfo(self):
          print('文章标题是:   '+self.title + '\n')         
          print('内容已经存储到out.txt文件中!')

     def getTitle(self):
          rex = re.compile('<title>(.*?)</title>',re.DOTALL)          
          match = rex.search(self.page)
          if match:
                return match.group(1)

          return 'NO TITLE'

     def getContent(self):
          bs = BeautifulSoup(self.page)
          html_content_list = bs.findAll('div',{'id':'article_content','class':'article_content'})
          html_content = str(html_content_list[0])

          rex_p = re.compile(r'(?:.*?)>(.*?)<(?:.*?)',re.DOTALL)
          p_list = rex_p.findall(html_content)


          content = ''
          for p in p_list:
               if p.isspace() or p == '':
                    continue
               content = content + p
          return content

     def saveFile(self):
          
          outfile = open('out.txt','a')
          outfile.write(self.content)

     def getNextArticle(self):
          bs2 = BeautifulSoup(self.page)
          html_nextArticle_list = bs2.findAll('li',{'class':'prev_article'})
          # print str(html_nextArticle_list[0])
          html_nextArticle = str(html_nextArticle_list[0])
          # print html_nextArticle

          rex_link = re.compile(r'<a href=\"(.*?)\"',re.DOTALL)
          link = rex_link.search(html_nextArticle)
          # print link.group(1)

          if link:
               next_url = 'http://blog.csdn.net' + link.group(1)
               return next_url

          return None




class Scheduler:
     def __init__(self,url):
          self.start_url = url

     def start(self):
          spider = CSDN_Blog_Spider(self.start_url)
          spider.printInfo()


          while True:
               if spider.getNextArticle():
                    spider = CSDN_Blog_Spider(spider.getNextArticle())
                    spider.printInfo()
               elif spider.getNextArticle() == None:
                    print 'All article haved been downloaded!'
                    break

               time.sleep(10)



#url = input('请输入CSDN博文地址:')
url = "http://blog.csdn.net/mangoer_ys/article/details/38427979"

Scheduler(url).start()


程序中有个问题一直不能解决:不能使用标题去命名文件,所以所有的文章全部放在一个out.txt中,说的编码的问题,希望大神可以解决这个问题。 


--结束END--

本文标题: Python爬虫抓取csdn博客

本文链接: https://www.lsjlt.com/news/189321.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python爬虫抓取csdn博客
            昨天晚上为了下载保存某位csdn大牛的全部博文,写了一个爬虫来自动抓取文章并保存到txt文本,当然也可以 保存到html网页中。这样就可以不用Ctrl+C 和Ctrl+V了,非常方便,抓取别的网站也是大同小异。为了解析抓取的...
    99+
    2023-01-31
    爬虫 博客 Python
  • 用python爬虫爬取CSDN博主信息
    一、项目介绍 爬取网址:CSDN首页的Python、Java、前端、架构以及数据库栏目。简单分析其各自的URL不难发现,都是https://www.csdn.net/nav/+栏目名...
    99+
    2024-04-02
  • 爬取博客园有关爬虫的文章
        最近自己的测试小圈子里都在讨论爬虫,发现我装逼都困难了许多,所以决定快速补充一下这方面的东西。     到网上找了点视频,实在是看不进去(主要是对装逼没有什么帮助),然后又由于略微懒得原因就写了这个小东西。     没有封装,流水...
    99+
    2023-01-30
    爬虫 博客园 文章
  • 将博客搬至CSDN —— python
    差不多两年前在oschina写的博客,现在搬到CSDN,原地址:https://my.oschina.net/u/2309100/blog/81877...
    99+
    2023-01-31
    博客 CSDN python
  • python爬虫怎么抓取html
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-22
  • python爬虫怎么爬取微博热搜
    这篇文章主要介绍python爬虫怎么爬取微博热搜,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!python有哪些常用库python常用的库:1.requesuts;2.scrapy;3.pillow;4.twiste...
    99+
    2023-06-14
  • Python爬虫抓取技术的门道
    web是一个开放的平台,这也奠定了web从90年代初诞生直至今日将近30年来蓬勃的发展。然而,正所谓成也萧何败也萧何,开放的特性、搜索引擎以及简单易学的html、css技术使得web成为了互联网领域里最为流行和成熟的信息传播媒介;但如今作为...
    99+
    2023-06-02
  • python爬虫如何爬取微博粉丝数据
    这篇文章主要介绍了python爬虫如何爬取微博粉丝数据,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。python可以做什么Python是一种编程语言,内置了许多有效的工具,P...
    99+
    2023-06-14
  • Python爬虫入门教程——爬取自己的博
    互联网时代里,网络爬虫是一种高效地信息采集利器,可以快速准确地获取网上的各种数据资源。本文使用Python库requests、Beautiful Soup爬取CSDN博客的相关信息,利用txt文件转存。 基础知识: 网络爬虫是一种高效地信...
    99+
    2023-01-30
    自己的 爬虫 入门教程
  • 如何用Python爬虫抓取代理IP
    本篇文章为大家展示了如何用Python爬虫抓取代理IP,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。不知道大家在访问网站的时候有没有遇到过这样的状况就是被访问的网站会给出一个提示,提示的显示是“访问...
    99+
    2023-06-02
  • Python 简单爬虫抓取糗事百科
        该爬虫主要实现的功能是抓取糗事百科里面的一些段子。    urllib2可以用urllib2.openurl中设置Request参数,来修改Header头。如果你访问一个网站,想更改User Agent(可以伪装你的浏览器),你就要...
    99+
    2023-01-31
    爬虫 糗事 百科
  • 六个步骤学会使用Python爬虫爬取数据(爬虫爬取微博实战)
    用python的爬虫爬取数据真的很简单,只要掌握这六步就好,也不复杂。以前还以为爬虫很难,结果一上手,从初学到把东西爬下来,一个小时都不到就解决了。 Python爬虫六部曲 第一步:安装request...
    99+
    2023-09-10
    python 爬虫 python入门 python爬虫 python爬虫爬取网页数据
  • 如何使用python爬虫抓取弹幕
    这篇文章主要讲解了“如何使用python爬虫抓取弹幕”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用python爬虫抓取弹幕”吧!一、爬虫是什么?百度百科这样说:自动获取网页内容的程序...
    99+
    2023-06-29
  • Python爬虫抓取时怎么更换ip
    这篇文章将为大家详细讲解有关Python爬虫抓取时怎么更换ip,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。python的五大特点是什么python的五大特点:1.简单易学,开发程序时,专注的是解决问题,...
    99+
    2023-06-15
  • Python怎么爬虫博文
    本篇内容主要讲解“Python怎么爬虫博文”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python怎么爬虫博文”吧!一. 大数据及数据挖掘基础***部分主要简单介绍三个问题:什么是大数据?什么...
    99+
    2023-06-17
  • 怎么用Python爬虫抓取智联招聘
    今天就跟大家聊聊有关怎么用Python爬虫抓取智联招聘,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。对于每个上班族来说,总要经历几次换工作,如何在网上挑到心仪的工作?如何提前为心仪工...
    99+
    2023-06-17
  • 怎么用python爬虫抓取网页文本
    使用Python爬虫抓取网页文本可以使用第三方库requests和beautifulsoup。首先,安装requests和beaut...
    99+
    2023-10-18
    python
  • 你会使用python爬虫抓取弹幕吗
    目录前言一、爬虫是什么?二、饲养步骤1.请求弹幕2.解析弹幕3.存储弹幕4.总代码三、总结前言 时隔108天,何同学在B站发布了最新的视频,《【何同学】我用108天开了个灯&hell...
    99+
    2024-04-02
  • python实战之Scrapy框架爬虫爬取微博热搜
    前言:大概一年前写的,前段时间跑了下,发现还能用,就分享出来了供大家学习,代码的很多细节不太记得了,也尽力做了优化。 因为毕竟是微博,反爬技术手段还是很周全的,怎么绕过反爬的话要在这...
    99+
    2024-04-02
  • python爬虫抓取数据的步骤是什么
    Python爬虫抓取数据的步骤通常包括以下几个步骤:1. 导入相关库:导入所需的库,例如requests用于发送HTTP请求,Bea...
    99+
    2023-09-08
    python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作