360文库Python采集工具,你急需要的文档搜集器来了!!
个人图书馆资料还是比较齐全的360文库可以帮你写爆款文案的AI系统,相信不少童鞋都惦记上里面的内容,什么要登录账号,还需要收藏才能粘贴复制,那内心肯定是拒绝的!
那么有什么好方法呢?当然还是祭上神器,一个爬虫搞定所有烦恼!
360文库是一个综合性的文档分享和学习平台,内容涉及教育考试、商业文档、行业资料、专业论文、工作计划和总结、办公文书、休闲生活等。
工具说明:
1.需输入初始网址,也就是你想要获取的文档地址
2.使用bs4获取相关内容
3.协议头中的一定要带上网址,不然图片反爬,403错误
4.图片获取这里写了两次,大家注意采用
5.还是图片的原因,导致库输出pdf格式无图片,这不知道怎么解决
6.可能部分内容获取不全,仅供测试使用,望见谅
运行效果:
爬取效果:
库输出pdf格式报错:
Loading pages (1/6)
Warning: Failed to load http://userimage8.360doc.com/19/1205/17/61082271_201912051709280365512574.jpg (ignore)
Warning: Failed to load http://userimage8.360doc.com/19/1206/09/61082271_201912060941350084527096.jpg (ignore)
Warning: Failed to load http://userimage8.360doc.com/19/1206/09/61082271_201912060941590240446268.jpg (ignore)
Warning: Failed to load http://userimage8.360doc.com/19/1206/09/61082271_201912060942170818231432.jpg (ignore)
Warning: Failed to load http://userimage8.360doc.com/19/1206/09/61082271_201912060942430568873791.jpg (ignore)
Warning: Failed to load http://userimage8.360doc.com/19/1206/09/61082271_201912060942580193985819.jpg (ignore)
Counting pages (2/6)
Resolving links (4/6)
Loading headers and footers (5/6)
Printing pages (6/6)
Done
就是图片反爬的设置!暂时没有不知道解决方案。。
self.confg = pdfkit.configuration(wkhtmltopdf=r'C:\Users\Administrator\AppData\Local\Programs\Python\Python37\wkhtmltox\bin\wkhtmltopdf.exe')
路径需改为你自己的!
关于库使用
,把HTML+CSS格式的文件转换成PDF格式文档的一种工具。它就是html转成pdf工具包的封装。所以360文库,必须手动安装。
安装:
pip install pdfkit
工具 下载网站是:
基本用法:
import pdfkit
pdfkit.from_url('http://google.com', 'out.pdf')
pdfkit.from_file('test.html', 'out.pdf')
pdfkit.from_string('Hello!', 'out.pdf')
可以转换的内容分别为三种,网址,文件以及文本内容!
附上完整源码:
#360doc采集
# -*- coding: utf-8 -*-
#20191211 by 微信:huguo00289
import requests
from bs4 import BeautifulSoup
from fake_useragent import UserAgent
import time
import pdfkit
import os
import re
class Doc(object):
def __init__(self,url):
self.ua=UserAgent()
self.url =url
self.headers={"User-Agent":self.ua.random,'Referer': self.url}
self.confg = pdfkit.configuration(wkhtmltopdf=r'C:\Users\Administrator\AppData\Local\Programs\Python\Python37\wkhtmltox\bin\wkhtmltopdf.exe') #wkhtmltopdf路径需改为你自己的!
self.path=r'360doc' #文件路径
self.h2=''
#访问文库链接
def get_soup(self):
response=requests.get(self.url,headers=self.headers)
if response.status_code==200:
soup=BeautifulSoup(response.content.decode('utf-8'),'lxml')
else:
print("访问%s文档链接失败!"%self.url)
soup=None
return soup
#获取文章内容
def get_content(self,soup):
texts=''
#获取标题
h2=soup.find('h2').get_text()
h2 = h2.replace('\n', '')
h2 = re.sub(r'[\|\/\<\>\:\*\?\\\"]', "_", h2) # 剔除不合法字符
self.h2=h2
print(h2)
path='%s/%s/'%(self.path,self.h2)
os.makedirs(path, exist_ok=True)
#获取文本内容
atricle = soup.find('table')
p_texts=atricle.find_all('p')
i=1
for p_text in p_texts:
if "img" in str(p_text):
img_url=p_text.find('img')['src']
img_name=f'{i}.jpg'
r=requests.get(img_url,headers=self.headers)
with open('%s/%s/%s' % (self.path, h2, img_name), 'wb') as f:
f.write(r.content)
print(f">>> 下载{img_name}图片成功了!")
time.sleep(1)
i=i+1
p_text=img_name
else:
p_text=p_text.get_text()
texts = '%s%s%s'%(texts,'\n',p_text)
texts = '%s%s%s' % (h2, '\n', texts)
print(texts)
print(f"开始保存{h2}.txt文档...")
with open('%s/%s/%s.txt' % (self.path,h2,h2),'w',encoding='utf-8') as f:
f.write(texts)
print(f">>> 保存{h2}文档成功了!")
#获取图片
imgs=atricle.find_all('img')
y = 1
for img in imgs:
imgq_url=img['src']
imgq_name=f'q_{y}.jpg'
rq = requests.get(imgq_url, headers=self.headers)
with open('%s/%s/%s' % (self.path, h2, imgq_name), 'wb') as f:
f.write(rq.content)
print(f">>> 下载{imgq_name}图片成功了!")
y=y+1
time.sleep(2)
self.dypdf(atricle, h2) #保存为pdf
#保存为pdf
def dypdf(self,atricle,h2):
path='%s/%s/%s.pdf' % (self.path,h2,h2)
datas=f'{atricle}'
print("开始打印内容!")
pdfkit.from_string(datas, path, configuration=self.confg)
print("打印保存成功!")
if __name__=='__main__':
url='http://www.360doc.com/content/19/1205/17/61082271_877658220.shtml'
spider=Doc(url) #实例化
soup=spider.get_soup()
spider.get_content(soup)
手机浏览,点击图片保存二维码到相册,然后打开微信扫一扫选择本二维码图片就可以进入,电脑端微信“扫一扫”二维码,进入找聊天搭子平台,里面有找饭搭子、找对象、找陪伴服务等等