Open YBFACC opened 4 years ago
使用puppeteer来爬取漫画
每章漫画的地址http://xxx.com/m12942/
img的地址为http://xxx.com/1/64/12942/6_4535.jpg?cid=12942&key=8321fe3a9daf63df94cd1cc9503a870c&uk=
img的地址暴露,没有在header中进行校验,使用该地址可以直接拿到图片。
我们可以使用puppeteer来进行自动化操作,存贮一章漫画的所有img链接。
有了img链接,就可以自己写个node脚本请求下载
省去了我们自己分析http的参数。
const puppeteer = require('puppeteer') async function getUrl() { const browser = await puppeteer.launch({ executablePath: '/Applications/Chromium.app/Contents/MacOS/Chromium', headless: true, defaultViewport: { width: 1440, height: 1000 } }) const page = await browser.newPage() page.setUserAgent( 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36' ) await page.goto(`http://xxx.com/m12942/`) //存储所有img链接 const url_list = [] await page.waitForSelector('.bottom-page2') const str = await page.$eval('.bottom-page2', item => item.textContent) //获取img的数量 let index = parseInt(str.match(/\-(\d+)/)[1], 10) console.log(index) while (index > 0) { await page.waitForSelector('img[id=cp_image]') await page.waitForSelector('.bottom-right :nth-child(4)') const url_item = await page.$eval('img[id=cp_image]', item => item.src) url_list.push(url_item) //跳转页面 await page.evaluateHandle(() => Promise.resolve(window.ShowNext())) index-- } await browser.close() return url_list } module.exports = getUrl
<a href="javascript:ShowNext();"><img src=""></a>
第一次看见这样的a标签。可以在点击a标签时,直接触发js函数。
puppeteer小练习
使用puppeteer来爬取漫画
每章漫画的地址http://xxx.com/m12942/
img的地址为http://xxx.com/1/64/12942/6_4535.jpg?cid=12942&key=8321fe3a9daf63df94cd1cc9503a870c&uk=
img的地址暴露,没有在header中进行校验,使用该地址可以直接拿到图片。
我们可以使用puppeteer来进行自动化操作,存贮一章漫画的所有img链接。
有了img链接,就可以自己写个node脚本请求下载
省去了我们自己分析http的参数。
大致思路
a标签
<a href="javascript:ShowNext();"><img src=""></a>
第一次看见这样的a标签。可以在点击a标签时,直接触发js函数。