zoukankan      html  css  js  c++  java
  • 笔趣阁小说爬取

    http://blog.csdn.net/qq_22073849/article/details/78018980  小说爬取参考

    完成到一半

    1.0 

    这个是很简陋的版本,我后面要加上一个进度。不然白瞎了,都不知到下多久,还有速度太慢了。能不能快点。这也是优化一个方面。

    这个写的真丑, 排版很丑. 可是嘛,语法还算简洁的事情.

     其中有两个细节 ,

    定义一个新的空列表 []

    循环取到后,使用append的方法添加进去.

    定义了两个方法. 算是比较简单了.

    以前都比现在强

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    import requests
    from bs4 import BeautifulSoup
    # get_url_list 获取所有章节的URL,在一个list里
    def get_url_list(url):
        content = requests.get(url).content           #获取页面内容
        soup = BeautifulSoup(content,'lxml')          #Beautifulsoup 实例化对象
        url_list = []                                #空的url_list 数组
        # urls = soup.find('div',{'id':'list'}).find('dl').find_all('dd')
        urls = soup.select('#list > dl > dd > a')    # 根据页面选择到URL ,还可以urls = soup.find('div',{'id':'list'}).find('dl').find_all('dd')
        for i in urls:          #遍历里面的每一章的URL
            i = i.get('href')   #获取URL
            # print(i)      
            i = 'http://www.biquge.com.tw' + i   #分析文章组成,形成最终的URL
            url_list.append(i)    #添加到url_list 里面去
        # print (url_list)
        return url_list
    # 获取这一章的内容
    def get_data(url):
        content = requests.get(url).content
        soup = BeautifulSoup(content, 'lxml')
        f = open(r'C:UsersHBXDocumentsstaudyHMXX.txt','a+',encoding='utf-8')  #不加utf-8 会有编码报错
        text_name = soup.find('div',{'class':'bookname'}).find('h1').text     #获得章节名字
        # text_content = soup.select('#content')
        text_content = soup.find('div',{'id':'content'}).get_text()    #获得章节内容  ,还有一种select css 选择的获取章节内容的方式
        book =text_name+ '
    ' + text_content    #整体的一章
        # print(book)
        f.write((book)+'
    ')   #换行写入
        f.close()   #关闭文件
        # for x in text_content:
        #     a = x.text.replace('readx();', '')
        #     print(a)
    
    
    
    if __name__ =='__main__':
        url = 'http://www.biquge.com.tw/18_18049/'   #笔趣阁的小说目录页面
        url_list = get_url_list(url)   #获取了所有的url
        for i in url_list:    # 循环一章url
            get_data(i)      #获取文章内容

    lxml 语法都忘得一干二净了,怪不得老是错误。好的,那现在开始把它弄起来。完成这个,可以还算是不错了。勉强懂了点皮毛。xpath 确实比beautifulsoup 好用。舒服。

    url_s = html.xpath('//*[@id="list"]/dl/dd/a/@href')

     同一子节点后面的class 要加方括号

    //div[@class="bookname"]/h1    等同于 //*[@class="bookname"]/h1  。在  http://www.biquge.com.tw/18_18049/8057786.html 。这个链接里。年轻人

    //*[@id="wrapper"]/div[4]/div/div[2]

    以后再优化这个版本,现在优衣库不是有打折更新嘛。这个有用,但是每件衣服要确定有没有自己的尺码,还要一个个点。这就不开心了。

    想着能不能写一个小程序,打折定期把它爬下来,然后打折的时候有库存我的尺码。抽空发邮件给我邮箱,这样我就可以自己去看了。有我的尺码,方便很多了。

    最好设置衣服,裤子。这样不用老爬一些衣服给我。--- 这个以后进入排期. 爬下来..挺有用的.

    其次就是推送过三次的衣服就不要推送了。(三四次都不买),肯定后面也没兴趣。有没有道理。

    当然有需求还可以自动下单。它一更新你就下订单。后面再决定要不要这也可以啊。没关系。

    不要的,再写一个一键退订。或者不退也行。应该关系不大,都没付钱。

    业余抽空写。先把自己的工作做好。下班了回去写写,那这个就很舒服了。

    对了记着要按方法对象来写。不然太麻烦了。全是过程的太难维护了。不舒服。

  • 相关阅读:
    Net core 关于缓存的实现
    2018年自己的技术心得
    DataSet
    弹错:正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码
    c#中结构与类的区别
    TEQC使用说明
    TEQC软件及使用方法
    <深度工作>笔记
    Gtest学习系列三:断言
    Gtest学习系列二:Gtest基本介绍
  • 原文地址:https://www.cnblogs.com/sakura3/p/8462917.html
Copyright © 2011-2022 走看看