kaixin365days 发表于 2020-6-19 14:24

自学了一段时间Python,闲来无事爬了本《西游记》给大家分享下

本帖最后由 kaixin365days 于 2020-6-19 14:34 编辑

运行没有问题,加注释就容易出错{:1_904:}
import requests
import os,time
from lxml import etree
from fake_useragent import UserAgent

def get_html(url):
    ua = UserAgent()
    headers = {'UserAgent': ua.random}
    response = requests.get(url,headers=headers)
    response.encoding = response.apparent_encoding
    return response

def be_tree(url):
    r = get_html(url)
    tree = etree.HTML(r.text)
    return tree

def get_mulu_lists(mulu_url):
    tree = be_tree(mulu_url)
    novel_name = tree.xpath('//h1/span/b/text()')
    cha_urls = tree.xpath('//ul/span/a/@href')
    titles = tree.xpath('//ul/span/a/text()')
    return novel_name,titles,cha_urls

def down_onechapter(novel_name,down_url):
    tree = be_tree(dow_url)
    datas = tree.xpath('//div/div/p/text()')
    for data in datas:
      with open(f'./{novel_name}.txt','a',encoding='utf-8')as f:
            f.write(data)
#写入2行空字符,以便章节内容排版
    with open(f'./{novel_name}.txt', 'a', encoding='utf-8')as f:
      f.write('\n')
      f.write('\n')
    print('下载完成')

if __name__ == '__main__':
    start = time.time()
    # 西游记目录,其他书籍替换链接即可
    url = 'https://so.gushiwen.cn/guwen/book_46653FD803893E4FBF8761BEF60CD7D9.aspx'
    base_url =url.split('/guwen')
    novel_name, titles, cha_urls = get_mulu_lists(url)
    for title,cha_url in zip(titles,cha_urls):
      dow_url = base_url + cha_url
      print(title,dow_url)
      with open(f'./{novel_name}.txt','a',encoding='utf-8')as f:
            f.write(title)
            f.write('\n')
      down_onechapter(novel_name,dow_url)
      print('全本下载完成')
    end = time.time()
    use_time = int(end) - int(start)
    print(f'下载耗时{use_time}秒')

kaixin365days 发表于 2020-7-2 21:37

于生 发表于 2020-7-2 21:28
好的,我现在在论坛找爬虫的视频在看。太多了,也不知道哪个比较基础,适合我这个新手看

我是先看了数据类型,数据基本操作,函数,再就是用模块爬个网页试试,慢慢碰到问题就网上搜资料,看介绍,多练习,共同进步吧

kaixin365days 发表于 2020-6-23 12:01

Simonl 发表于 2020-6-21 16:45
加注释怎么会出错呢,注释都不参与执行

我刚开始把注释写到代码后面了,如“print(name) #输出name”这样就会有错误,后来把注释单独成行就好了。感觉可能是注释打乱了代码格式,导致执行出错

叶凯 发表于 2020-6-19 14:27

学多久能出师,会前端和php,也想学下python爬些一些数据

kaixin365days 发表于 2020-6-19 14:36

叶凯 发表于 2020-6-19 14:27
学多久能出师,会前端和php,也想学下python爬些一些数据

:handshake我也没出师呢,自己选了些教程看,多写,多交流共同进步

zdnyp 发表于 2020-6-19 14:43

3.6以上版本才能运行

Zeaf 发表于 2020-6-19 14:53

加注释容易错可还行

mihacker 发表于 2020-6-19 14:53

生成的文本好大~~~

gdp123gd 发表于 2020-6-19 15:07

加注释会出错的话,注意下运行环境,有可能是运行环境不支持中文

吾爱不再 发表于 2020-6-19 15:21

多谢分享!支持一下!

kaixin365days 发表于 2020-6-19 15:40

gdp123gd 发表于 2020-6-19 15:07
加注释会出错的话,注意下运行环境,有可能是运行环境不支持中文

语句后面#加中文注释会出错,把#注释单独成行就没有问题了

kaixin365days 发表于 2020-6-19 15:44

zdnyp 发表于 2020-6-19 14:43
3.6以上版本才能运行

我用的是python3.6版本,PyCharm 2020.1.1 x64版本
页: [1] 2 3
查看完整版本: 自学了一段时间Python,闲来无事爬了本《西游记》给大家分享下