网址:融资总额近3亿美元、药明康德押注,这家抗衰老明星公司有何过人之处-36氪
想要抓取文章内容,但是找不到啊,可能是文字格式的问题,也可能文章内容进行了加密。
在元素中查看,window.initialState返回的就是加密的内容。那么现在又要开始解密了,准备好了吗。
先进行关键字搜索,打上断点,刷新页面。
哇撒,感觉很明显的AES解密,在控制台打印参数,ne就是密文内容
复制代码:
var ne = ee.a.enc.Utf8.parse("efabccee-b754-4c");
var re, oe = window.initialState || {};
oe.isEncrypt && (oe = JSON.parse((re = window.initialState.state,ee.a.AES.decrypt(re, ne, {mode: ee.a.mode.ECB,padding: ee.a.pad.Pkcs7}).toString(ee.a.enc.Utf8).toString())))
看一下这个ee.a,果然是标准库的解密算法,导入标准库,替换掉ee.a即可,泪目,竟然这么简单!
window是啥呢?就是一个密文的格式!
究极改进代码
const CryptoJS = require('crypto-js');window = {initialState: {"state": "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","isEncrypt": true}}//window.initialState.state类似于python字典取值window['initialState'][state'']
var ne = CryptoJS.enc.Utf8.parse("efabccee-b754-4c");re = window.initialState.state;
resp = CryptoJS.AES.decrypt(re, ne, {mode: CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8).toString()
console.log(resp)
结果为:
为了与python代码进行交互,我们对代码稍微修改一下:
const CryptoJS = require('crypto-js');
function get_content(state){window = {initialState: {"state":state,"isEncrypt": true,}}//window.initialState.state类似于python字典取值window['initialState'][state'']
//ne是密钥var ne = CryptoJS.enc.Utf8.parse("efabccee-b754-4c");re = window.initialState.state;resp = CryptoJS.AES.decrypt(re, ne, {mode: CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8).toString()return JSON.parse(resp)
}
接着写一个python代码获取密文,与js交互,再取出内容。
import requests
import re
import execjsdef GetResponse(url):headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',}response = requests.get(url=url,headers=headers)return responsedef GetContent():link = 'https://www.36kr.com/p/2729715501638664'html = GetResponse(link).textencrypted_data = re.findall('window.initialState=\{"state":"(.*?)"',html)[0]#解析数据,提取密文内容json_code = execjs.compile(open('demo11.js', 'r', encoding='utf-8').read())result = json_code.call('get_content',encrypted_data )title = result['articleDetail']['articleDetailData']['data']['widgetTitle']content = result['articleDetail']['articleDetailData']['data']['widgetContent']return title,contentif __name__ == '__main__':title,content = GetContent()print(title)print(content)
结果展现:
好了,获取到数据后,我们的目标是保存到pdf的格式,怎么做呢?
首先,把文章内容保存成html
然后,把html文件转成pdf
先要有一个前端的模板
html_str = '''<!doctype html><html lang="en"><head><meta charset="utf-8"><title>Document</title></head><body>{article}</body></html>'''
保存成html代码
import requests
import re
import execjsdef GetResponse(url):headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',}response = requests.get(url=url,headers=headers)return responsedef GetContent():link = 'https://www.36kr.com/p/2729715501638664'html = GetResponse(link).textencrypted_data = re.findall('window.initialState=\{"state":"(.*?)"',html)[0]#解析数据,提取密文内容json_code = execjs.compile(open('demo11.js', 'r', encoding='utf-8').read())result = json_code.call('get_content',encrypted_data )title = result['articleDetail']['articleDetailData']['data']['widgetTitle']content = result['articleDetail']['articleDetailData']['data']['widgetContent']return title,content
def Save(title,content):html_str = '''<!doctype html><html lang="en"><head><meta charset="utf-8"><title>Document</title></head><body>{article}</body></html>'''string = html_str.format(article=content)html_file = 'html\\'+title+'.html'with open(html_file,mode='w',encoding='utf-8') as f:f.write(string)if __name__ == '__main__':title,content = GetContent()Save(title,content)print(title)print(content)
结果展现:
现在开始转变成pdf
import requests
import re
import execjs
import pdfkitdef GetResponse(url):headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',}response = requests.get(url=url,headers=headers)return responsedef GetContent():link = 'https://www.36kr.com/p/2729715501638664'html = GetResponse(link).textencrypted_data = re.findall('window.initialState=\{"state":"(.*?)"',html)[0]#解析数据,提取密文内容json_code = execjs.compile(open('demo11.js', 'r', encoding='utf-8').read())result = json_code.call('get_content',encrypted_data )title = result['articleDetail']['articleDetailData']['data']['widgetTitle']content = result['articleDetail']['articleDetailData']['data']['widgetContent']return title,content
def Save(title,content):html_str = '''<!doctype html><html lang="en"><head><meta charset="utf-8"><title>Document</title></head><body>{article}</body></html>'''string = html_str.format(article=content)html_file = 'html\\'+title+'.html'with open(html_file,mode='w',encoding='utf-8') as f:f.write(string)pdf_path = 'pdf\\'+title+'.pdf'config = pdfkit.configuration(wkhtmltopdf=r'C:\Users\86187\PycharmProjects\pythonProject2\wkhtmltoodf\wkhtmltopdf\bin\wkhtmltopdf.exe')pdfkit.from_file(html_file, pdf_path, configuration=config)if __name__ == '__main__':title,content = GetContent()Save(title,content)print(title)print(content)
最终成功了
如果想多爬取页面,只要获取各个页面的url就行了。也就是获取每个文章的id,交给你自己去想办法。