笔趣阁小说爬取

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]

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

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

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

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

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

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

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

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

原文地址:https://www.cnblogs.com/sakura3/p/8462917.html