美文网首页Python专辑Python爬虫Python3自学 爬虫实战
Python爬取博客网站所有页面文章内容

Python爬取博客网站所有页面文章内容

作者: Mo丶染洛凉 | 来源:发表于2017-06-30 17:38 被阅读1592次

更多教程请移步至:洛凉博客

求助请移步至:Python自学技术交流

前几天一直在写爬取图片的代码。XXOO网站,煎蛋网妹子图,桌酷壁纸网,最好大学排名。
想看所有代码的朋友,可以上git上拉取下。
这是仓库地址:https://github.com/YGQ8988/reptile.git
最近一直在想爬文本是不是比图片还难呢?
今天就随便访问了一个博客地址,试手了一下,起初就爬取了一篇文章,然后成功获取到了文章标题,内容。然后有尝试保存到本地。成功了。
然后又观察了下页面,每篇文章的源代码所在的位置都一样。
然后尝试了下10页数据的爬取,发现有的文章内容保存不下来,报错为编码问题,但是我代码里每次requests访问都加了编码,暂时没找到解决的办法。
最后只能简单粗暴的加了try和except过滤掉了。
抓不成功,直接过滤掉。进行下一个文章爬取。
改了下代码。文件名称优化了下。

image.png

后面改了下代码,爬取全部页面。也加了下time模块做休眠,防止访问频繁IP被封。
比较菜,IP代理访问设置还不会,scrapy框架也还不会。
最近免费领了个阿里云服务器,改完后直接丢掉服务器上运行了。

image.png

下面直接贴代码了。这次代码的注释没写很多。大家自己去尝试下。
这样就会明白每行代码的作用。

import requests
from bs4 import BeautifulSoup
import bs4
import os
from time import sleep
url_list = []
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}
def url_all():
    for page in range(1,401):
        url = 'http://blog.csdn.net/?ref=toolbar_logo&page='+str(page)
        url_list.append(url)
def essay_url(): #找到所有文章地址
    blog_urls = []
    for url in url_list:
        html = requests.get(url, headers=headers)
        html.encoding = html.apparent_encoding
        soup = BeautifulSoup(html.text, 'html.parser')
        for h3 in soup.find_all('h3'):
            blog_url = (h3('a')[0]['href'])
            blog_urls.append(blog_url)
    return blog_urls
def save_path():
    s_path = 'D:/blog/'
    if  not os.path.isdir(s_path):
        os.mkdir(s_path)
    else:
        pass
    return s_path
def save_essay(blog_urls,s_path): #找到所有文章标题,文章内容。
    for url in blog_urls:
        blog_html = requests.get(url, headers=headers)
        blog_html.encoding = blog_html.apparent_encoding
        soup = BeautifulSoup(blog_html.text, 'html.parser')
        try:
            for title in soup.find('span', {'class': 'link_title'}):
                if isinstance(title, bs4.element.Tag):
                    print('-----文章标题-----:', title.text)
                    blogname = title.text
                    blogname = blogname.replace("\n",'')
                    blogname = blogname.replace("\r",'')
                    blogname = blogname.replace(" ",'')
                    try:
                        file = open(s_path + str(blogname) + '.txt', 'w')
                        file.write(str(title.text))
                        file.close()
                    except BaseException as a:
                        print(a)

            for p in soup.find('div', {'class': 'article_content'}).children:
                if isinstance(p, bs4.element.Tag):
                    try:
                        file = open(s_path + str(blogname) + '.txt', 'a')
                        file.write(p.text)
                        file.close()
                    except BaseException as f:
                        print(f)
        except BaseException as b:
            print(b)
    print('---------------所有页面遍历完成----------------')
sleep(10)
url_all()
save_essay(essay_url(),save_path())

买了三本书,最近都没看了。书上讲的基本都是内置模块。
最近发现爬虫挺好玩的,也在继续学习,研究。
希望学会框架,这样就能胜任简单的爬虫工程师了。
哈哈,是不是想的太美。

相关文章

  • Python爬取博客网站所有页面文章内容

    更多教程请移步至:洛凉博客 求助请移步至:Python自学技术交流 前几天一直在写爬取图片的代码。XXOO网站,煎...

  • 爬虫篇(2)——爬取博客内容

    对博客网站博客园首页的200页网站进行内容爬取 用lxml和xpath进行爬取数据 页面分析 主页面image.p...

  • 爬取Python教程博客并转成PDF

    爬取Python教程博客并转成PDF 今天我们爬取一下python教程博客并把爬取内容转换成PDF储存到本地。用到...

  • 利用scrapy的Selectors从stack overflo

    本次将从stack overflow网站上爬取一些信息。先来看一下网站的python页面(https://stac...

  • 三阶段day26-爬虫介绍

    爬取猫眼网站的电影信息 爬取页面信息的基本思路是: 1、获取页面信息2、解析页面信息并匹配自己想要爬取的数据3、组...

  • Python学习

    python爬虫(五) python爬虫爬取豆瓣电影Top250数据 利用python爬取豆瓣电影TOP250页面...

  • 各类链接

    爬虫 使用python-aiohttp爬取今日头条 【Python】爬虫爬取各大网站新闻 Scrapy 模拟登录新...

  • CentOS7上使用Chrome的无头浏览器

    0. 前言 说到Python爬虫,就一定会涉及到“反爬”策略,就会遇到“爬取动态页面元素”的问题,如果目标网站没有...

  • 案例集锦

    案例一: 京东商品页面的爬取 案例二:亚马逊商品页面的爬取 由于amazon禁止python访问,要把header...

  • python爬虫学习手册-服务器渲染(基础库urllib)熟悉

    今天我们来说说python爬虫的第一步!爬,爬这一步分为网站爬取和APP爬取,而网站爬取里面按照渲染方式,有分为服...

网友评论

  • 深吸一口气:请问,如果博客里面有图片的话,要怎么将图文保存在一起😂
    Mo丶染洛凉:@为丨所欲丨为 那你看看有类似操作word文档的模块吗?我没弄过
    深吸一口气:@Mo丶染洛凉 不能保存在一个文档里面么😂就是想把一篇有图文的博客完整的保存在一个文档里
    Mo丶染洛凉:@为丨所欲丨为 获取图片链接,在单独写个函数处理呗
  • zhangsan5421:免费的阿里云服务器哪里可以申请到?
    zhangsan5421:@Mo丶染洛凉 现在免费的套餐,已经被抢光了。
    zhangsan5421:@Mo丶染洛凉 谢谢
    Mo丶染洛凉:@zhangsan5421 https://free.aliyun.com/?spm=5176.8112568.738194.1.aFriKg&type=personal

本文标题:Python爬取博客网站所有页面文章内容

本文链接:https://www.haomeiwen.com/subject/esdicxtx.html