? ? 3.示例2RedisSpider:
?? ??? ?? ? ? a.使用方法:它與示例1只有一個地方不同,就是將start_url存入redis中见坑,代碼如下:
?? ??? ?? ? ?b.總結:該示例很簡單捏检,只是將start_url存入redis_key中,就可實現(xiàn)分布式爬蟲熊楼,
?? ??? ??? ??? ??? ??? ???多臺電腦共同完成一個爬蟲能犯,數(shù)據(jù)不會重復
? ? 4.示例3RedisCrawlSpider:
?? ??? ??? ?? ? a.使用方法:也是使用redis_key方法,不過使用CrawlSpider組件請求url地址执泰,方便快捷:
十渡蜻、Crontab定時執(zhí)行爬蟲
十一、當當爬蟲實例
? ? 11.1目標:爬取當當網(wǎng)站的圖書數(shù)據(jù)
? ? 11.2實現(xiàn):
?? ??? ?? ? ?setting.py的配置如下:
十二顿苇、收獲總結感悟
?? ??? ???到此,關于Python爬蟲的知識點就學完了凑队,總結一下爬蟲的知識點漩氨,核心就是4個步驟遗增,
構建請求-》獲取響應-》提取數(shù)據(jù)-》保存數(shù)據(jù)
? ? ? ? ? 只要實現(xiàn)了這四步就是一個完整的爬蟲做修,其他所有的知識點都是為了實現(xiàn)這四步操作,
- 項目名字:scarpy爬蟲
- 項目介紹:
? ?爬了京東饰及,當當燎含,亞馬遜等網(wǎng)站,獲取網(wǎng)站上的圖書數(shù)據(jù)绘梦,每個月定時抓取圖書數(shù)據(jù)卸奉,使用該數(shù)據(jù)實現(xiàn)了圖書信息的匯總择卦,比對和篩選
- 開發(fā)環(huán)境
? ?linux+pycharm+requests+mongodb+redis+crontab+scrapy_redis+ scarpy + mysql+gevent+celery+threading
- 使用技術
??- 使用requests...把數(shù)據(jù)存儲在mongodb中
??- 使用crontab實現(xiàn)程序的定時啟動抓取
??- url地址的去重
????- 使用redis的集合敲长,把request對象的XXX字段通過sha1生成指紋祈噪,放入redis的集合中進行去重辑鲤,實現(xiàn)基于url地址的增量式爬蟲
????- 布隆過濾
??- 對數(shù)據(jù)的去重
????- 把數(shù)據(jù)的XXX字段通過sha1生成指紋,放入redis的集合中進行去重弛随,實現(xiàn)增量式爬蟲
??- 反扒
????- 代理ip
??????- 購買了第三的代理ip,組成代理ip池栓票,其中的ip沒兩天更新一次愕够,同時使用單獨的程序來檢查代理ip的可用
????- cookie
??????- 準備了XX個賬號,使用requests獲取賬號的對應的cookie坠狡,存儲在redis中,后續(xù)發(fā)送請求的時候隨機選擇cookie
??????- 使用selenium來進行模擬登陸遂跟,獲取cookie逃沿,保存在Redis中
????- 數(shù)據(jù)通過js生成
??????- 分析js,通過chrome瀏覽器定位js的位置幻锁,尋找js生成數(shù)據(jù)的方式
??????- 通過selenium來模擬頁面的加載內容感挥,獲取頁面動態(tài)加載后的數(shù)據(jù)
??- 提高爬蟲效率
????- 使用多線,線程池越败,協(xié)程触幼,celery來完成爬蟲
????- 使用scrapy框架來實現(xiàn)爬蟲,
??????- 不能斷點續(xù)爬究飞,請求過的url地址不能持久化
????????- 使用scrapy_redis
??????- 不能對數(shù)據(jù)進行去重
????????- 把數(shù)據(jù)的XXX字段通過sha1生成指紋置谦,放入redis的集合中進行去重,實現(xiàn)增量式爬蟲
????- scrapy_redis
??????- domz實現(xiàn)增量式亿傅,持久化的爬蟲
??????- 實現(xiàn)分布式爬蟲