[Python] 纯文本查看 复制代码import requests

from lxml import etree

import re

import os

import pdfkit

def gethtml(url,encode):

r = requests.get(url)

r.encoding = encode

return r.text

def writehtml(path,str):

f = open(path,'w+',encoding='utf-8')

f.write(str)

f.close

def validateTitle(title):

rstr = r"[\/\\\:\*\?\"\<\>\|]"

new_title = re.sub(rstr, "_", title)

return new_title

def mkdir(path):

path = path.strip()

isExists = os.path.exists(path)

if not isExists:

os.makedirs(path)

return True

else:

print('文件夹已存在,请检查后再试!')

return False

def getdata(url,pdf):

print('开始获取,请稍候...')

c_url = url.split('/')[0] + '//' + url.split('/')[2] + '/'

html = gethtml(url,'utf-8')

ehtml = etree.HTML(html)

urll1 = ehtml.xpath('//*[@id="contents"]/dd/a/@href')

till1 = ehtml.xpath('//*[@id="contents"]/dd/a/text()')

s = ehtml.xpath('//*[@id="contents"]/dd/span/text()')

folder=validateTitle(ehtml.xpath('//*[@id="contents"]/dt/a/text()')[0])

if mkdir(savepath+folder):

m = 0

txt=''

for i in urll1:

html = gethtml(c_url + i,'utf-8')

ehtml = etree.HTML(html)

strs = ehtml.xpath('//*[@id="article"]')[-1]

txtl1 = etree.tostring(strs, encoding="utf-8", pretty_print=True, method="html").decode("utf-8")

fname = validateTitle(s[m] + ' ' + till1[m])

txtl1 = re.sub('

.*?

','

'+fname+'

',txtl1)

txtl1 = re.sub('src="/','src="'+c_url+'/',txtl1)

txt=txt+txtl1

#writehtml(savepath+folder+'\\'+fname+'.html', txtl1) #每个章节生成一个html文件

s1 = ehtml.xpath('//*[@id="contents"]/dl/dd/text()')

s2 = ehtml.xpath('//*[@id="contents"]/dl/dd/a/text()')

urll2=ehtml.xpath('//*[@id="contents"]/dl/dd/a/@href')

print(fname)

n=0

for j in urll2:

html=gethtml(c_url+j,'utf-8')

ehtml = etree.HTML(html)

strs = ehtml.xpath('//*[@id="arc-body"]')[-1]

txtl2 = etree.tostring(strs, encoding="utf-8", pretty_print=True, method="html").decode("utf-8")

fname = validateTitle(s1[n]+' '+s2[n])

txtl2= re.sub('','

',txtl2)

txtl2 = re.sub('[2,4]>', '', txtl2)

txtl2 = re.sub('src="/','src="'+c_url+'/',txtl2)

txtl2 = '

' + fname + '

'+txtl2

txt = txt + txtl2

#writehtml(savepath+folder+'\\'+fname + '.html', txtl2) #每个章节生成一个html文件

print(fname)

n+=1

m+=1

writehtml(savepath+folder+'\\'+folder + '.html',txt)

if pdf:

print('开始生成pdf,请稍候...')

path_wk = r'C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe' # wkhtmltopdf安装位置

config = pdfkit.configuration(wkhtmltopdf=path_wk)

options = {

'page-size': 'A4',

'margin-top': '0.75in',

'margin-right': '0.75in',

'margin-bottom': '0.75in',

'margin-left': '0.75in',

'encoding': "UTF-8",

'outline': None

}

pdfkit.from_file([savepath+folder+'\\'+folder + '.html'], savepath+folder+'\\'+folder+'.pdf',options=options,configuration=config)

print('任务完成!')

if __name__ == '__main__':

url = 'http://c.biancheng.net/python/' #获取教程url地址

savepath='C:\\' #保存位置

getdata(url,True) #后面True表示生成PDF,False不生成

python生成c语言代码_Python爬取C语言中文网教程生成PDF相关推荐

  1. python 制作网站教程_Python爬取网站博客教程并制作成PDF

    要把教程变成PDF有三步: 1.先生成空html,爬取每一篇教程放进一个新生成的div,这样就生成了包含所有教程的html文件(BeautifulSoup) 2.将html转换成pdf(wkhtmlt ...

  2. python爬取豆瓣代码_python爬取豆瓣

    在上课时,有时需要显示一个倒计时时钟,让学生做题. PPT 没有简单有效的方法实现倒计时时钟,参考了多个方案,最终决定采用 GIF 动画来实现. 这样使用起来很简单,只要把事先做好的各个时长的倒计时动 ...

  3. 利用python可以做什么菜_python 爬取菜单生成菜谱,做饭买菜不用愁

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:木下瞳 转载:python 爬取菜单生成菜谱,做饭买菜不用愁​mp. ...

  4. python爬取网页书籍名称代码_python爬取亚马逊书籍信息代码分享

    我有个需求就是抓取一些简单的书籍信息存储到mysql数据库,例如,封面图片,书名,类型,作者,简历,出版社,语种. 我比较之后,决定在亚马逊来实现我的需求. 我分析网站后发现,亚马逊有个高级搜索的功能 ...

  5. python爬取豆瓣代码_python爬取豆瓣视频信息代码

    [TOC] 这里是爬取豆瓣视频信息,用pyquery库(jquery的python库). 一:代码 from urllib.request import quote from pyquery impo ...

  6. python外汇兑换代码_python爬取人民币汇率中间价

    python爬取人民币汇率中间价,从最权威的网站中国外汇交易中心. 首先找到相关网页,解析链接,这中间需要经验和耐心,在此不多说. 以人民币兑美元的汇率为例(CNY/USD),脚本详情如下: wind ...

  7. python爬取ppt代码_Python爬取PPT模板小工具

    由于很多PPT抓取工具都会因为版本问题无法使用,所以论坛大神就自己写了这款Python爬取PPT模板小工具,可以帮助用户轻松获取各种PPT模板,使用的时候注意一次只能下载一种类型.软件仅供交流学习,下 ...

  8. python爬取并下载代码_python 爬取并批量下载网易云歌单源代码

    #!/usr/bin/env python#!--*--coding:utf-8 --*-- #![url=home.php?mod=space&uid=238618]@Time[/url]  ...

  9. python电影评论的情感分析流浪地球_python爬取豆瓣流浪地球影评,生成词云

    代码很简单,一看就懂. (没有模拟点击,所以都是未展开的) 地址: https://movie.douban.com/subject/26266893/reviews?rating=&star ...

最新文章

  1. JVM 史上最最最完整深入解析(12000 字噢)
  2. python中collections_Python中的collections模块
  3. Sql Server'不允许保存更改'错误►防止保存需要重新创建表的更改
  4. BZOJ4129: Haruna’s Breakfast
  5. php中echo js代码,JS有没类似PHP的echo效果?
  6. springboot配置templates直接访问
  7. html模板 循环里if,django模板里循环变量table里想要两个一行如何控制
  8. dump文件解析之探索.Net的内存
  9. (3.13)mysql基础深入——mysql日志分析工具之mysqlsla【待完善】
  10. vivaldi浏览器_两款可以提升效率的网络浏览器
  11. 单片机编程:软件定时器
  12. 大漠插件dm7.2149
  13. 域渗透——获取用户明文密码
  14. 《东周列国志》第三十一回 晋惠公怒杀庆郑 介子推割股啖君
  15. python绘制彩色地震剖面断层解释_断层在地震剖面上的反映及解释
  16. BLM(业务领导模型)
  17. 1和4互素吗_互素是什么意思?1~10中与10互素的数有多少个
  18. 实时换脸技术——直播,视频通话|脸部交换程序
  19. 类似微信群聊九宫格头像的算法实现
  20. vue 拖拽功能样式优化

热门文章

  1. activiti 多租户_Activiti中具有独立数据库架构的多租户
  2. activemq消息持久化_将ActiveMQ持久消息传递性能提高25倍
  3. glass fish_Glass Fish 4.0.1中的Jersey SSE功能
  4. jboss架构_检查Red Hat JBoss BRMS部署架构的规则和事件(第一部分)
  5. Spring Framework中的作用域代理
  6. java开发人员_每个Java开发人员都应该阅读的10本书
  7. 您准备好观看GraphQL了吗?
  8. java中序列化与反序列化_Java中的序列化
  9. spring pom设置_Spring社交Twitter设置
  10. 使用React,Spring Boot和用户身份验证构建CRUD应用程序