Advertisement

【Python】煎蛋网XXOO图片抓取

阅读量:

今天,我写了一个关于爬虫的帖子,提到了一个网站叫煎蛋网,感觉挺有意思的。作者用的是Selenium工具,还提到了PhantomJS,看来他对爬虫有一定的了解。他提到网站在反爬措施上很到位,所以用Selenium来模拟访问可能是个好方法。代码里导入了很多模块,比如WebDriver、XPATH、LXML、requests等等,这些都是爬虫常用的库。作者还提到了下载图片的部分,用了requests库来获取图片内容,然后保存下来。看起来他不仅爬取了数据,还处理了图片下载,挺全面的。不过,我有点担心的是,他提到的PhantomJS是不是真的能模拟真实的浏览器访问,会不会有风险或者被网站检测到?另外,代码里的下载部分,有没有考虑图片的大小或者格式,会不会影响下载速度?还有,作者提到的群组分享资源,感觉挺实用的,特别是对于刚开始学习Python的人来说,能找到很多学习资料,挺不错的。总的来说,这个帖子内容挺详细的,涵盖了爬虫的整个流程,从分析网站到获取数据,再到处理图片下载,应该对学习爬虫的人来说很有帮助。

今天,我深入探索了一个深受爬虫爱好者推崇的网站——煎蛋网(http://jandan.net/ooxx)。这个网站虽不算平淡无奇,但教程内容丰富多样,涵盖了多种实现方式。网站在经受着爬虫爱好者的持续挑战的同时,也在不断进化完善,反爬虫策略层出不穷。今天,我借助Selenium框架,对这个网站发起了精准攻击。

从整体情况来看,煎蛋网妹子图的质量表现尚可。数量有限,但确实在一定程度上具有吸引力。这可能也是促使爬虫er群体不断前行的重要原因之一。

1. 网站分析

这个网站如果采用Selenium进行抓取,其实也没有必要进行深入分析,只需模拟访问即可。即可完成任务,导入必要的模块即可。

复制代码
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from lxml import etree
    import requests
    
    import time

我采用的是PhantomJS这一工具来模拟浏览器访问,关于这一工具,您可以通过互联网资源库查找相关资料,相信这些资源会令您受益匪浅。综上所述,PhantomJS能够实现浏览器功能,帮助获取所需数据。

复制代码
    browser = webdriver.PhantomJS()
    browser.set_window_size(1366, 768)  # 这个地方需要设置一下浏览器的尺寸
    wait = WebDriverWait(browser,10)
    browser.get("http://jandan.net/ooxx")
    Python资源分享qun 784758214 ,内有安装包,PDF,学习视频,这里是Python学习者的聚集地,零基础,进阶,都欢迎

2. 分析数据

系统接收到数据后即可开始对数据进行解析。开发一个get_content模块,用于解析网页源码。

复制代码
    def get_content():
    
    try:
    
        wait.until(
            EC.presence_of_element_located((By.XPATH,'//*[@id="comments"]/ol'))
        )
        #
        print("正在爬取{}".format(browser.current_url))
        page_source = browser.page_source  # 获取网页源码
        html = etree.HTML(page_source)  # 解析源码
        imgs = html.xpath("//li[contains(@id,'comment')]//img/@src")  # 匹配图片
        download(imgs)
    
    except Exception as e:
        print("错误")
        print(e)
    finally:
        browser.close()

在获取图片后,提醒,在代码中有一个地方被调用的 download函数,该功能的作用就是下载图片。

复制代码
    def download(imgs):
    path = "./xxoo/{}"  # 路径我写死了
    for img in imgs:
        try:
            res = requests.get(img)
            content = res.content
        except Exception as e:
            print(e)
            continue
    
        file_name = img.split("/")[-1] # 获取文件名
    
        with open(path.format(file_name),"wb") as f:
            f.write(content)
            print(file_name,"成功下载文件")
            time.sleep(0.3)
    
    # 循环下载完毕,进行翻页操作 previous-comment-page
    next = wait.until(
        EC.presence_of_element_located((By.XPATH, '//*[@id="comments"]//a[@class="previous-comment-page"]'))
    )
    next.click()
    return get_content()  # 继续调用上面的网页源码分析流程
    Python资源分享qun 784758214 ,内有安装包,PDF,学习视频,这里是Python学习者的聚集地,零基础,进阶,都欢迎

全部评论 (0)

还没有任何评论哟~