实用爬虫--csdn文章下载
·
最近在csdn上发现不少好文章,便有一个想法把文章保存到本地,于是写了一个小爬虫能下载html文件并转化成pdf,代码逻辑不是很难,使用的htmltopdf工具也很容易下载。
代码如下:
# !/usr/bin/env python
# -*- coding: utf-8 -*-
#@time:2021/9/22 12:32
#author:uuyjp
import requests, parsel, pdfkit,os
from lxml import etree
from pprint import pprint
os_path = os.getcwd() + '/blog/'
if not os.path.exists(os_path):
os.mkdir(os_path)
class csdnSpider(object):
def __init__(self):
self.start_url = input('请输入要下载的csdn链接:')
self.headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/87.0.4280.88 Safari/537.36'
}
def parse_start_url(self):
response = requests.get(self.start_url,headers=self.headers).content.decode()
# pprint(response)
self.parse_response(response)
def parse_response(self,response):
html_xpath = etree.HTML(response)
file_name = html_xpath.xpath(r'//h1[@id="articleContentId"]/text()')[0]
# print(file_name)
author_name = html_xpath.xpath(r'//a[@id="uid"]/@title')[0]
# print(author_name)
'''
这里xpath是没用的,所以选择css解析数据
'''
html_css = parsel.Selector(response)
self.save_data(html_css,file_name)
def save_data(self,html_css,file_name):
data = html_css.css('article').get()
#创建一个html页面
html = \
'''
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
{}
</body>
</html>
'''.format(data)
#保存为html文件
with open(os_path + f'{file_name}.html','w', encoding='utf-8') as f:
f.write(data)
#转化为pdf
try:
config = pdfkit.configuration(wkhtmltopdf=r'C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe')
pdfkit.from_file(os_path +f'{file_name}.html', os_path + f'{file_name}.pdf',configuration=config)
print(f'文件下载成功:{file_name}.pdf')
except Exception as e:
pass
if __name__ == '__main__':
cs = csdnSpider()
cs.parse_start_url()
当然采用了面向对象的方式编写,如果有不清楚的地方可以留言。
结果:

阅读上没大问题,下载后方便整理,反复学习。
妈妈再也不用担心我的学习资料啦。
更多推荐
所有评论(0)