• 【爬虫】【原创】08 使用简单正则表达式爬取下厨房(早餐,午餐,晚餐)


          目的

    1)      提取下厨房关键词为(早餐,午餐,晚餐)的菜谱

    2)      获取“菜谱链接,图片地址,菜名,材料,七天内多少人做过,作者“,存储到MONGODB

    3)      对每个菜谱进行网页截图,保存到本地

    2.      目标站点分析

    网址:

    http://www.xiachufang.com/

    输入关键词“早餐”,发现是跳转链接(暂时没想到这种怎么处理比较好,就单独拿出来处理吧)


    午餐和晚餐的网址就比较一致


    3.      爬取思路(以午餐为例)

    1)      根据午餐关键词,组合url,请求得到第一页结果

    2)      解析第一页结果,使用正则表达式获取,提取详情页信息和其他信息

    3)      根据详情页信息的url获取详情页,截图保存,文件夹使用详情页URLID_菜名

    4)      改变page参数,获取多页内容

    4.      需要处理的

    1)      早餐的url独立处理(跳转的url还没学过怎么处理)

    2)      有一些菜谱存在综合评分的数字,有些不存在,无法用正则表达式统一提取,待改进

    3)      获取的菜谱名和用户名几乎都会存在windows下文件夹不能存在的特殊字符,使用链式replace替换

    4)      page用于多线程处理

    5)      截图使用seleniumPhantomjs完成,暂时只会截取全屏,还没研究过怎么截取需要的部分

    6)      增量更新,包括数据库和网页截图的方法(做法变化或者作者更新删除等的判断),这些还没学会怎么做(虽然现在的爬虫框架比如Scrapy/Pyspider都提供了去重的功能,但是具体实现还没研究过),这是一个造轮子的过程

    5.      代码部分

    1)      解析每一页,得到“菜谱链接,图片地址,菜名,材料,七天内多少人做过,作者”


    2)      解析详情页,并截图


    3)      存到MongoDB


    4)      开启多线程


     

           以前写个爬虫要1天时间,现在好了一点,2小时能撸完一个简单的爬虫,再接再厉

     

    爬取效果:



    18页结果一共运行了5分半钟(4核处理器)

     

     

    代码地址:

    https://github.com/copywang/spiders_collection/tree/master/08_xiachufang

     

  • 相关阅读:
    LeetCode 791. 自定义字符串排序
    LeetCode 725. 分隔链表
    LeetCode 445. 两数相加 II
    LeetCode 354. 俄罗斯套娃信封问题
    LeetCode 338. 比特位计数
    LeetCode 318. 最大单词长度乘积
    LeetCode 300. 最长上升子序列
    蚂蚁金服研发面经
    Consul etcd ZooKeeper euerka 对比
    Java并发机制的底层实现原理之volatile应用,初学者误看!
  • 原文地址:https://www.cnblogs.com/copywang/p/8017656.html
Copyright © 2020-2023  润新知