博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小甲鱼python视频xxoo爬虫代码改进--煎蛋网
阅读量:3967 次
发布时间:2019-05-24

本文共 2082 字,大约阅读时间需要 6 分钟。

2020/7/31 今天学习得是关于小甲鱼得python课程,根据这个课程也确确实实得学到了不少东西,所以希望大家也可以一起去学习

下面是我在小甲鱼上课改造之后得代码
这个课程是在b站上看的,号码是 av27789609
在这里插入图片描述

这个是第五十节左右得爬虫 ooxx

在这里插入图片描述

他的教学视频是很早的时候录得,现在的网站进行了base64的加密等反爬措施,所以在原有的基础上需要进行修改

下面是我的代码,希望可以给大家一些启发,同时也希望大佬们给与指点。

import urllib.requestimport urllib.parseimport osimport base64def urlopen(url):    req=urllib.request.Request(url)    req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362')    response=urllib.request.urlopen(req)    html=response.read()    return html

上面的这一个urlopen简单的说是为了进入网站,然后阅读网站的代码,从而之后为了找到图片的地址等等提供帮助

def getpage(url):    html=urlopen(url).decode('utf-8')    a=html.find('current-comment-page')+23    b=html.find(']',a)    return (html[a:b])

这个是网站里面的有个页数,选择第几页的时候会用的到,写道这里的时候可以尝试先print(html[a:b]),看是否出来对应的页数在进行操作,那里的"+23"其实是’current-comment-page’的长度,这样做+23之后就直接到达了页数所在的地方。

def findimg(url):    html=urlopen(url).decode('utf-8')    imgaddrs=[]    a=html.find('src=')    b=html.find('.jpg',a,a+255)    while a!= -1:        b=html.find('.jpg',a,a+255)        if b!= -1:          imgaddrs.append('https:'+html[a+5:b+4])        else:          b=a+5        a=html.find('src=',b)    return imgaddrs

这里是找图片的函数,在网站的源码中寻找src=,这样就可以找到网站里图片的地址,但是图片里的地址没有http:,所有就需要拼接一下使得网站里read()到的地址加上http:,从而获得一个完整的网络地址。

def xiazai(floder='ooxx',pages=10):    os.mkdir(floder)    os.chdir(floder)    url='http://jandan.net/pic/'    pagenum=int(getpage(url))    s = '20200730-'    d='%d'%pagenum    c=s+d    b =base64.b64encode(c.encode('utf-8')).decode("utf-8")    for i in range(pages):        pagenum -= i        pageurl=url+b+'#comments'        imgaddrs=findimg(pageurl)        imgaddrs=imgaddrs        saveimg(floder,imgaddrs) if __name__ == '__main__':    xiazai()

这个就是从网上下载的具体方法,这里注意的是原来的网站里面的代码经过了base64加密,就是这里面的s代表着每天的日期

这个其实放在最后好一些点。

def saveimg(folder,imgaddrs):    for each in imgaddrs:        filename=each.split('/')[-1]        with open(filename,'wb') as f:            img =urlopen(each)            f.write(img)

这个是网站得到的图片进行保存,保存到指定的文件夹里面

这就是改完之后的了,亲测可以运行,希望大佬们给点指点

转载地址:http://vpcki.baihongyu.com/

你可能感兴趣的文章
在中断上下文使用disable_irq()的…
查看>>
在中断上下文使用disable_irq()的…
查看>>
内核定时器
查看>>
内核定时器
查看>>
中断与内核定时器
查看>>
中断与内核定时器
查看>>
source insight的疑问
查看>>
source insight的疑问
查看>>
Linux输入子系统 input_dev 概述
查看>>
Linux输入子系统 input_dev 概述
查看>>
A new I/O memory access mechanis…
查看>>
A new I/O memory access mechanis…
查看>>
s3c2410时钟信号:FCLK、HCL…
查看>>
s3c2410时钟信号:FCLK、HCL…
查看>>
自旋锁与信号量(转载)
查看>>
自旋锁与信号量(转载)
查看>>
主函数main中变量(int argc…
查看>>
主函数main中变量(int argc…
查看>>
转载--request_irq() | 注册…
查看>>
转载--request_irq() | 注册…
查看>>