鱼C论坛

 找回密码
 立即注册
查看: 1811|回复: 12

关于爬虫教程中的一个问题

[复制链接]
发表于 2017-11-1 09:19:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在小甲鱼老师爬虫煎蛋网妹子图的教程里出现了这样一段代码
def get_page(url):
    html = url_open(url).decode('utf-8')

    a = html.find('current-comment-page') + 23
    b = html.find(']', a)

    return html[a:b]

其中a = html.find('current-comment-page') + 23后面的+23是什么意思啊,为什么是+23??

网页元素中对应的代码是
<span class="current-comment-page">[245]</span>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-1 09:42:03 | 显示全部楼层
+23 以后才会偏移到后面的[245]中的‘2’那个位置
而b对应的是 ‘ ] ' 这个位置
这样return html[a:b] 才能返回想要的 245
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-1 10:34:47 | 显示全部楼层
其实这个方法不要太纠结,实际中没人会用这样的办法去提取内容
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-1 11:34:22 | 显示全部楼层
字符串的find方法返回的是找到符合子字符串的第一个位置,因此找到这个子字符串之后需要向后移动字符串的长度和后面其他字符串的长度,才是真正网址的起始位置a。查找网址末尾的方法是在a位置的基础上向后找‘]’这个字符,返回的是这个字符的位置。因此函数返回网址的时候只需要利用字符串的切片方法,从a向后到b的前一个位置。
用help(str.find)查看内置对象字符串的方法。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-1 14:25:18 | 显示全部楼层
我也看到这个地方了,按照视频自己运行会报403的错  各位大侠给看指点下吧  

========================代码部分========================
import urllib.request
import os

def url_open(url):
    req = urllib.request.Request(url)
    req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.18 Safari/537.36')
    response = urllib.request.urlopen(url)
    html = response.read()

    return html


def get_page(url):
    url_open(url).decode('utf-8')
    a = html.find('current-comment-page') + 23
    b = html.find(']',a)

    return html[a:b]

def find_imgs(url):
    html = response.read().decode('utf-8')
    img_addrs = []

    a = html.find('img src=')

    while a != -1:     
        b = html.find('.jpg',a,a+255)
        if b != -1:
             img_addrs.append(html[a+9:b+4])
        else:
            b = a+9

        a = html.find('img src=',b)


    return img_addrs
        


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

def download_mm(folder='ooxx',pages=10):
    os.mkdir(folder)
    os.chdir(folder)

    url = "http://jandan.net/ooxx/"

    page_num = int(get_page(url))

    for i in range(pages):
        page_num -= i
        page_url = url + 'page-' + str(page_num) + '#comments'
        img_addrs = find_imgs(page_url)
        save_imgs(folder,img_addrs)


if __name__== '__main__':
    download_mm()
=========================执行结果=======================
QQ截图20171101142440.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-1 14:29:00 | 显示全部楼层
amanionly 发表于 2017-11-1 14:25
我也看到这个地方了,按照视频自己运行会报403的错  各位大侠给看指点下吧  

======================== ...

!!!!!我也是403,似乎是煎蛋网有了反爬机制。。。求大神来解决了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-1 14:30:00 | 显示全部楼层
BngThea 发表于 2017-11-1 09:42
+23 以后才会偏移到后面的[245]中的‘2’那个位置
而b对应的是 ‘ ] ' 这个位置
这样return html[a:b] 才 ...

明白了!谢谢!!!能看下楼下那位鱼油的问题吗,我也遇到了403
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-1 14:30:47 | 显示全部楼层
ooxx7788 发表于 2017-11-1 10:34
其实这个方法不要太纠结,实际中没人会用这样的办法去提取内容

明白了!谢谢!!!能看下楼下那位鱼油的问题吗,我也遇到了403
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-1 14:32:14 | 显示全部楼层
现在是不是很多网页都出了 反爬虫的机制了   啥也不让抓  这个视频是2014年还是2015年出的   现在的环境完全不一样了   这好尴尬呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-1 14:38:19 | 显示全部楼层
小明EVO 发表于 2017-11-1 14:30
明白了!谢谢!!!能看下楼下那位鱼油的问题吗,我也遇到了403

反爬机制,现在审核方式更麻烦了,具体我也搞不了了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-1 14:43:53 | 显示全部楼层
BngThea 发表于 2017-11-1 14:38
反爬机制,现在审核方式更麻烦了,具体我也搞不了了

那现在有啥网站比较适合新手练手爬取的啊QAQ
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-1 17:43:33 | 显示全部楼层
小明EVO 发表于 2017-11-1 14:43
那现在有啥网站比较适合新手练手爬取的啊QAQ

别让小甲鱼老师看见了,试试鱼C
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-1 18:57:05 | 显示全部楼层
新手·ing 发表于 2017-11-1 17:43
别让小甲鱼老师看见了,试试鱼C

0.0好像很有道理哦,悄悄咪咪去试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 11:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表