自学了一段时间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}秒')
于生 发表于 2020-7-2 21:28
好的,我现在在论坛找爬虫的视频在看。太多了,也不知道哪个比较基础,适合我这个新手看
我是先看了数据类型,数据基本操作,函数,再就是用模块爬个网页试试,慢慢碰到问题就网上搜资料,看介绍,多练习,共同进步吧 Simonl 发表于 2020-6-21 16:45
加注释怎么会出错呢,注释都不参与执行
我刚开始把注释写到代码后面了,如“print(name) #输出name”这样就会有错误,后来把注释单独成行就好了。感觉可能是注释打乱了代码格式,导致执行出错 学多久能出师,会前端和php,也想学下python爬些一些数据 叶凯 发表于 2020-6-19 14:27
学多久能出师,会前端和php,也想学下python爬些一些数据
:handshake我也没出师呢,自己选了些教程看,多写,多交流共同进步 3.6以上版本才能运行 加注释容易错可还行 生成的文本好大~~~ 加注释会出错的话,注意下运行环境,有可能是运行环境不支持中文 多谢分享!支持一下! gdp123gd 发表于 2020-6-19 15:07
加注释会出错的话,注意下运行环境,有可能是运行环境不支持中文
语句后面#加中文注释会出错,把#注释单独成行就没有问题了 zdnyp 发表于 2020-6-19 14:43
3.6以上版本才能运行
我用的是python3.6版本,PyCharm 2020.1.1 x64版本