今天为大家整理了23个Python爬虫项目。整理的原因是,爬虫入门简单快速,也非常适合新入门的小伙伴培养信心,所有链接指向GitHub,微信不能直接打开,老规矩,可以用电脑打开。
  
  关注公众号「Python专栏」,后台回复:爬虫书籍,获取2本Python爬虫相关电子书。
  
  Python专栏二维码
  
  1. WechatSogou – 微信公众号爬虫
  
  基于搜狗微信搜索的微信公众号爬虫接口,可以扩展成基于搜狗搜索的爬虫,返回结果是列表,每一项均是公众号具体信息字典。
  
  github地址:
  
  https://github.com/Chyroc/WechatSogou
  
  2. DouBanSpider – 豆瓣读书爬虫
  
  可以爬下豆瓣读书标签下的所有图书,按评分排名依次存储,存储到Excel中,可方便大家筛选搜罗,比如筛选评价人数>1000的高分书籍;可依据不同的主题存储到Excel不同的Sheet ,采用User Agent伪装为浏览器进行爬取,并加入随机延时来更好的模仿浏览器行为,避免爬虫被封。
  
  github地址:
  
  https://github.com/lanbing510/DouBanSpider
  
  3. zhihu_spider – 知乎爬虫
  
  此项目的功能是爬取知乎用户信息以及人际拓扑关系,爬虫框架使用scrapy,数据存储使用mongo
  
  github地址:
  
  https://www.ysptvip1.com github.com/LiuRoy/zhihu_spider
  
  4. bilibili-user – Bilibili用户爬虫
  
  总数据数:20119918,抓取字段:用户id,昵称,性别,头像,等级,经验值,粉丝数,生日,地址,注册时间,签名,等级与经验值等。抓取之后生成B站用户数据报告。
  
  github地址:
  
  https://www.mtyl127.com github.com/airingursb/bilibili-user
  
  5. SinaSpider – 新浪微博爬虫
  
  主要爬取新浪微博用户的个人信息、微博信息、粉丝和关注。代码获取新浪微博Cookie进行登录,可通过多账号登录来防止新浪的反扒。主要使用 scrapy 爬虫框架。
  
  github地址:
  
  https://www.xinhuiyule1.cn github.com/LiuXingMing/SinaSpider
  
  6. distribute_crawler – 小说下载分布式爬虫
  
  使用scrapy,Redis, MongoDB,graphite实现的一个分布式网络爬虫,底层存储MongoDB集群,分布式使用Redis实现,爬虫状态显示使用graphite实现,主要针对一个小说站点。
  
  github地址:
  
  https://www.gcyl159.com/ github.com/gnemoug/distribute_crawler
  
  7. CnkiSpider – 中国知网爬虫。
  
  设置检索条件后,执行src/CnkiSpider.py抓取数据,抓取数据存储在/data目录下,每个数据文件的第一行为字段名称。
  
  github地址:
  
  https://www.mren2yule.com github.com/yanzhou/CnkiSpider
  
  8. LianJiaSpider – 链家网爬虫。
  
  爬取北京地区链家历年二手房成交记录。涵盖链家爬虫一文的全部代码,包括链家模拟登录代码。
  
  github地址:
  
  https://www.yongshiyule178.com github.com/lanbing510/LianJiaSpider
  
  9. scrapy_jingdong – 京东爬虫。
  
  基于scrapy的京东网站爬虫,保存格式为csv。
  
  github地址:
  
  https://www.dfgjpt.com github.com/taizilongxu/scrapy_jingdong
  
  10. QQ-Groups-Spider – QQ 群爬虫。
  
  批量抓取 QQ 群信息,包括群名称、群号、群人数、群主、群简介等内容,最终生成 XLS(X) / CSV 结果文件。
  
  github地址:
  
  https://www.yongshi123.cn github.com/caspartse/QQ-Groups-Spider
  
  11. wooyun_public - 乌云爬虫。
  
  乌云公开漏洞、知识库爬虫和搜索。全部公开漏洞的列表和每个漏洞的文本内容存在MongoDB中,大概约2G内容;如果整站爬全部文本和图片作为离线查询,大概需要10G空间、2小时(10M电信带宽);爬取全部知识库,总共约500M空间。漏洞搜索使用了Flask作为web server,bootstrap作为前端。
  
  https://github.com/hanc00l/wooyun_public
  
  12. spider – hao123网站爬虫。
  
  以hao123为入口页面,滚动爬取外链,收集网址,并记录网址上的内链和外链数目,记录title等信息,windows7 32位上测试,目前每24个小时,可收集数据为10万左右
  
  https://www.120xh.cn github.com/simapple/spider
  
  13. findtrip – 机票爬虫(去哪儿和携程网)。
  
  Findtrip是一个基于Scrapy的机票爬虫,目前整合了国内两大机票网站(去哪儿 + 携程)。
  
  https://www.dfgjyl.cn github.com/fankcoder/findtrip
  
  14. 163spider
  
  基于requests、MySQLdb、torndb的网易客户端内容爬虫
  
  https://www.078881.cn github.com/leyle/163spider
  
  15. doubanspiders
  
  豆瓣电影、书籍、小组、相册、东西等爬虫集
  
  https://www.jiahuayulpt.com github.com/fanpei91/doubanspiders
  
  16. QQSpider
  
  QQ空间爬虫,包括日志、说说、个人信息等,一天可抓取 400 万条数据。
  
  https://github.com/LiuXingMing/QQSpider
  
  17. baidu-music-spider
  
  百度mp3全站爬虫,使用redis支持断点续传。
  
  https://github.com/Shu-Ji/baidu-music-spider
  
  18. tbcrawler
  
  淘宝和天猫的爬虫,可以根据搜索关键词,物品id来抓去页面的信息,数据存储在mongodb。
  
  https://www.thd178.com/ github.com/pakoo/tbcrawler
  
  19. stockholm
  
  一个股票数据(沪深)爬虫和选股策略测试框架。根据选定的日期范围抓取所有沪深两市股票的行情数据。支持使用表达式定义选股策略。支持多线程处理。保存数据到JSON文件、CSV文件。
  
  https://www.yongxin7.com github.com/benitoro/stockholm
  
  20. BaiduyunSpider - 百度云盘爬虫。
  
  https://www.68079.cn github.com/k1995/BaiduyunSpider
  
  21. Spider
  
  社交数据爬虫。支持微博,知乎,豆瓣。
  
  https://www.68076.cn github.com/Qutan/Spider
  
  22. proxy pool
  
  Python爬虫代理IP池(proxy pool)。
  
  https://www.mhylpt.com github.com/jhao104/proxy_pool
  
  23. music-163
  
  [root@app51 docker]# docker run -d --name nginx-c1 --cpu-quota 50000 nginx:latest
  
  e9432a513e4bed0a744a29a8eaba2b27d9e40efabfe479d19d32f9558888ed29
  
  [root@app51 docker]#
  
  此时我们查看cpu对应的容器资源限制:
  
  [root@app51 docker]# cd /sys/fs/cgroup/cpu/docker/
  
  [root@app51 docker]# cat e9432a513e4bed0a744a29a8eaba2b27d9e40efabfe479d19d32f9558888ed29/cpu.cfs_quota_us
  
  50000
  
  [root@app51 docker]# cat www.xycheng178.com e9432a513e4bed0a744a29a8eaba2b27d9e40efabfe479d19d32f9558888ed29/tasks
  
  10561
  
  10598
  
  从上面结果我们能看出,docker run的启动限制参数值,被注入到了Cgroups的cpu控制组的对应配置文件中了。同时还有看到有两个进程同时被限制了,这是因为我们启动的nginx,nginx的主进程会启动多个子进程,使用ps -ef可以查看:
  
  [root@app51 docker]# ps -ef |grep 10561
  
  root 10561 10544 0 16:32 ? 00:00:00 nginx: master process nginx -g daemon off;
  
  101 10598 10561 0 16:32 ? 00:00:00 nginx: worker process
  
  root 10614 10179 0 16:38 pts/2 00:00:00 grep --color=auto 10561
  
  [root@app51 docker]#
  
  不难看到,其中主进程为10561(nginx master),子进程为10598(nginx worker)。以上则是docker的资源限制原理。Docker对资源限制主要是CPU和内存,其中还有很多参数可以使用,以下将会介绍docker中CPU和MEMERY限制参数。
  
  三、CPU限制参数
  
  默认情况下,容器的资源是不受限制的,宿主机提供多少资源,容器就可以使用多少资源,如果不对容器做资源限制,很有可能一个或几个容器把宿主机的资源耗尽,而导致应用或者服务不可用。所以对容器资源的限制显得非常重要,而docker主要提供两种类别的资源限制:CPU和内存,通过docker run 时指定参数实现。cpu限制资源限制有多种维度,以下将详细介绍。
  
  限制cpu配额
  
  参数通过--cpu-period=<value>和--cpu-quota=<value>共同起作用,即介绍上述Cgroups使用的例子。表示在cpu-period时间(默认100ms)内,可用的cpu配额。
  
  示例:
  
  docker run -d --cpu-period=100000 --cpu-quota=250000 --name test-c1 nginx:latest
  
  限制cpu可用数量
  
  参数通过--cpus=<value>指定,意思限制可用cpu个数,列如--cpus=2.5表示该容器可使用的cpu个数最多是2.5个,这相当与设置了--cpu-period=100000和 --cpu-quota=250000该指令在docker版本1.13以及以上使用。
  
  示例:
  
  [root@app51 ~]# docker run -d --cpus=2 --name test-c2 nginx:latest
  
  5347269d0974e37af843b303124d8799c6f4336a14f61334d21ce9356b1535bc
  
  使用固定的cpu
  
  通过--cpuset-cpus参数指定,表示指定容器运行在某个或某些个固定的cpu上,多个cpu使用逗号隔开。例如四个cpu,0代表第一个cpu,--cpuset-cpus=1,3代表该容器只能运行在第二个或第四个cpu上。查看cpu可以通过cat /proc/cpuinfo查看。
  
  示例:
  
  [root@app51 ~]# docker run -d --cpuset-cpus=1,3 --name test-c3 nginx:latest
  
  276056fce04982c2de7969ca309560ce60b0ebf960cf7197808616d65aa112d4
  
  设置CPU比例(权重)
  
  通过参数--cpu-shares指定,值为大于或小于1024的整数(默认1024),代表当主机cpu资源使用紧张时,每个容器所使用的cpu资源的比例(权重)。当有足够的CPU资源时,所有容器都会根据需要使用尽可能多的CPU。当第一个容器设置该参数的值为2048,第二个容器设置该参数的值为4096,那么当cpu资源不够用时候,两个容器cpu资源使用比例为1:2,
  
  示例:
  
  [root@app51 ~]# docker run -d --cpu-shares=2048 --name test-c4 nginx:latest
  
  578506d61324b38d7a01bf1d2ec87cb5d1ab50276ef6f7b28858f2d2e78b2860
  
  [root@app51 ~]# docker run -d --cpu-shares=4096 --name test-c5 nginx:latest
  
  d56a90bf080b70d11d112468348874e48fe4a78d09d98813a0377b34fa382924
  
  四、 MEMORY限制参数
  
  内存是一种不可压缩资源,一旦某个进程或者容器中应用内存不足就会引起OOM异常(Out Of Memory Exception),这将导致应用不可用,并且在Linux主机上,如果内核检测到没有足够的内存来执行重要的系统功能,系统会按照一定优先级杀死进程来释放系统内存。docker对内存的限制分为swap限制和物理内存限制,单位可以使用b,k, m,g。
  
  限制最大物理内存使用
  
  通过-m或者—memory指定,是硬限制,如果设置此选项,则允许设置的最小值为4m,该参数是最常用参数。
  
  示例:
  
  [root@app51 ~]# docker run -d --memory=512m --name mem-c1 nginx:latest
  
  67b0cb645c401bc6df3235d27d629185870716351396c71dfa3877abbbd377c8
  
  限制swap使用
  
  通过--memory-swap参数指定,不过此参数设置时候,情况比较较多。当容器中的物理内存使用不足时候,swap才会被允许使用,所以当--memory参数设置时候,此参数才会有意义:
  
  --memory-swap 设置为正整数,那么这两个--memory和 --memory-swap 必须设置。--memory-swap 表示可以使用的memory 和 swap,并且--memory控制非交换内存(物理内存)使用的量。列如--memory=300m 和--memory-swap=1g,容器可以使用300m的内存和700m(1g - 300m)swap。
  
  --memory-swap 设置为0,则忽略该设置,并将该值视为未设置。
  
  --memory-swap 设置为与值相同的值--memory,并且--memory设置为正整数,则容器不能使用swap,可以通过此方法限制容器不使用swap。
  
  --memory-swap 未设置并--memory 设置,则容器可以使用两倍于--memory设置的swap,主机容器需要配置有swap。例如,如果设置--memory="300m" 和--memory-swap 未设置,容器可以使用300m的内存和600m的swap。
  
  --memory-swap 设置为-1,则允许容器使用无限制swap,最多可达宿主机系统上可用的数量。
  
  示例:
  
  [root@app51 ~]# docker run -d --memory=512m --memory-swap=512m --name mem-c2 nginx:latest
  
  6b52c015a53be2c3e0e509eea918125a760c1c14df4cc977f05b5b31b83161d5
  
  其他
  
  --oom-kill-disable :默认情况下,如果发生内存不足(OOM)错误,内核会终止容器中的进程,如要更改此行为,使用该--oom-kill-disable选项,但是该选项有个前提就是-m选项必须设置。
  
  --memory-swappiness:默认情况下,容器的内核可以交换出一定比例的匿名页。--memory-swappiness就是用来设置这个比例的。--memory-swappiness可以设置为从 0 到 100。0 表示关闭匿名页面交换。100 表示所有的匿名页都可以交换。默认情况下,如果不适用--memory-swappiness,则该值从父进程继承而来。
  
  --memory-reservation:Memory reservation 是一种软性限制,用于限制物理内存的最大用值,它只是确保容器不会长时间占用超过--memory-reservation限制的内存大小。给--memory-reservation设置一个比-m小的值后,虽然容器最多可以使用-m使用的内存大小,但在宿主机内存资源紧张时,在系统的下次内存回收时,系统会回收容器的部分内存页,强迫容器的内存占用回到--memory-reservation设置的值大小。

23个Python爬虫开源项目代码,包含微信、淘宝、豆瓣、知乎、微博等的更多相关文章

  1. 23个Python爬虫开源项目代码,让你一次学个够

    今天为大家整理了23个Python爬虫项目.整理的原因是,爬虫入门简单快速,也非常适合新入门的小伙伴培养信心.所有链接指向GitHub,祝大家玩的愉快 1.WechatSogou [1]– 微信公众号 ...

  2. 23个Python爬虫开源项目代码

    今天为大家整理了23个Python爬虫项目.整理的原因是,爬虫入门简单快速,也非常适合新入门的小伙伴培养信心.所有链接指向GitHub,祝大家玩的愉快 1.WechatSogou [1]– 微信公众号 ...

  3. 23个Python爬虫开源项目代码:爬取微信、淘宝、豆瓣、知乎、微博等

    来源:全球人工智能 作者:SFLYQ 今天为大家整理了23个Python爬虫项目.整理的原因是,爬虫入门简单快速,也非常适合新入门的小伙伴培养信心.所有链接指向GitHub,祝大家玩的愉快 1.Wec ...

  4. 转载|23个Python爬虫开源项目代码:爬取微信、淘宝、豆瓣、知乎、微博等

    地址:https://ask.julyedu.com/article/323

  5. Python爬虫开源项目代码,爬取微信、淘宝、豆瓣、知乎、新浪微博、QQ、去哪网等 代码整理

    作者:SFLYQ 今天为大家整理了32个Python爬虫项目.整理的原因是,爬虫入门简单快速,也非常适合新入门的小伙伴培养信心.所有链接指向GitHub,祝大家玩的愉快 1.WechatSogou [ ...

  6. Python爬虫实战五之模拟登录淘宝并获取所有订单

    经过多次尝试,模拟登录淘宝终于成功了,实在是不容易,淘宝的登录加密和验证太复杂了,煞费苦心,在此写出来和大家一起分享,希望大家支持. 温馨提示 更新时间,2016-02-01,现在淘宝换成了滑块验证了 ...

  7. Python爬虫实战四之抓取淘宝MM照片

    原文:Python爬虫实战四之抓取淘宝MM照片其实还有好多,大家可以看 Python爬虫学习系列教程 福利啊福利,本次为大家带来的项目是抓取淘宝MM照片并保存起来,大家有没有很激动呢? 本篇目标 1. ...

  8. 一次Python爬虫的修改,抓取淘宝MM照片

    这篇文章是2016-3-2写的,时隔一年了,淘宝的验证机制也有了改变.代码不一定有效,保留着作为一种代码学习. 崔大哥这有篇>>小白爬虫第一弹之抓取妹子图 不失为学python爬虫的绝佳教 ...

  9. 教你阅读Python开源项目代码

    为什么要阅读开源代码 阅读 Python 开源项目代码主要有如下三个原因: 在工作过程中遇到一些问题 Google 和 StackOverFlow 等网站找不到解决办法,只能去翻源码. 对某些项目或者 ...

随机推荐

  1. 3.5《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)—第三章小结

    本章使用的重要命令总结在Table 5中 命令 描述 示例 curl 与URL交互 $ curl -O example.com which 指出程序的在计算机的路径 $ echo bar >&g ...

  2. Ionic下的JPush缺少统计代码问题解决方法

    用Ionic打包apk后安装到手机,收到缺少统计代码的提示,解决方法如下: 1. 找到了 platforms/android/src/com/ionichina/ioniclub/MainActiov ...

  3. 总结几个常用的系统安全设置(含DenyHosts)

    1)禁止系统响应任何从外部/内部来的ping请求攻击者一般首先通过ping命令检测此主机或者IP是否处于活动状态如果能够ping通 某个主机或者IP,那么攻击者就认为此系统处于活动状态,继而进行攻击或 ...

  4. cf946d 怎样逃最多的课dp

    来源:codeforces                                              D. Timetable Ivan is a student at Berland ...

  5. ACM找bug方案

    测试数据和一些常见的数据都通过了然而还是wrong,可以试试下面的一些解决方案: 1.数据爆掉 ①  可以改变数据类型,以容纳 ②  修改当前算法,比如a*a/b可以改写成a/b*a 2 特殊情况,例 ...

  6. Peer Programming Project: 4 Elevators Scheduler 附加题 157 165

    1.改进电梯调度的interface 设计, 让它更好地反映现实, 更能让学生练习算法, 更好地实现信息隐藏和信息共享. 每个电梯增加目标楼层数组,这样可以更好地进行任务的分配,在我们的电梯中,这个数 ...

  7. 访谈:BugPhobia’s Brief Communication

    0x01 :采访的学长简介 If you weeped for the missing sunset, you would miss all the shining stars 梁野,北京航空航天大学 ...

  8. 我的github地址 https://github.com/1010de/Test.git

    构建之法老师叫交下任务学习github,经过一段时间的学习和了解,看介绍.看视频.看博客.初步认识到github的方便与好处.     自己试着去注册和使用github,已经慢慢学会了一些基本操作. ...

  9. 第三个Sprint ------第三天

    出题界面代码 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns ...

  10. Android中加解密算法大全

    Base64编码 Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,本质上是一种将二进制数据转成文本数据的方案,对于非二进制数据,是先将其转换成二进制形式,然后每连续6比特(2的6次 ...