• 爬取古诗文网的孙子兵法


    网址:https://www.gushiwen.org/guwen/sunzi.aspx

    访问地址:

    进行页面的分析:通过抓包工具进行分析

    标题:

    章节目录链接:

    进行第一部分的代码编写:

    # author:ziqingbaojian
    
    # 导入第三方模块
    import requests
    import re
    from lxml import etree
    import os
    
    # 使用OS模块创建文件
    dirName='./孙子兵法'
    if not os.path.exists(dirName):
        os.mkdir(dirName)
    
    
    url='https://www.gushiwen.org/guwen/sunzi.aspx'
    # 构造U-A伪装:
    headers={
        'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36'
    }
    # 请求数据
    page_text=requests.get(url=url,headers=headers).text
    # 使用xpath解析
    tree=etree.HTML(page_text)
    # 获取图书名称
    title=tree.xpath('/html/body/div//h1/text()')[0]
    # 成功获取书名,进行章节url的爬取
    ex='<span><a href="(.*?)">'
    word_url=re.findall(ex,page_text,re.S)
    ex2='<span><a href=".*?">(.*?)</a></span>'
    chapter_name=re.findall(ex2,page_text,re.S)
    # 创建文本,写入图书名称
    word_path=dirName+'/szbf2.txt'
    with open(word_path,'a',encoding='utf-8')as fp:
        fp.write(title)
        fp.write('\n')
        fp.close()

    进行详情页分析:

    页面的内容在每一p标签下面,进行数据的额解析与存储:

    count=0
    for word in word_url:
       word_response= requests.get(url=word,headers=headers).text
       ex='<div class="contson">(.*?)</div>'
       p_list=re.findall(ex,word_response,re.S)
       with open(word_path, 'a', encoding='utf-8')as fp:
           fp.write(chapter_name[count])
           fp.write('\n')
           fp.close()
       print(chapter_name[count],'正在下载!!!')
       count += 1
       for p in p_list:
           ex='<p>(.*?)</p>'
           word_data=re.findall(ex,p,re.S)
           # 法一:无分段;使用join.(list)方法将列表转换成字符串
           # with open(word_path, 'a', encoding='utf-8')as fp:
           #     fp.write(''.join(word_data))
           #     # 使用join.(list)方法将列表转换成字符串
           #     fp.write('\n')
           for word in word_data:
               with open(word_path, 'a', encoding='utf-8')as fp:
                   fp.write(word)
                   fp.write('\n')

    运行成功界面:

     

     运行成功,感谢观看!

  • 相关阅读:
    设计一个移动应用的本地缓存机制
    LeetCode 15
    POJ 2411
    Mahout构建图书推荐系统【一起学Mahout】
    firefox篇
    zTree实现删除树节点
    Tomcat与Servlet工作流程
    cocos2d 重写顶点着色语言
    将HTML格式的String转化为HTMLElement
    JQuery总结
  • 原文地址:https://www.cnblogs.com/Blogwj123/p/13943543.html
Copyright © 2020-2023  润新知