端口扫描python_scrapy端口扫描脚本

hacker|
169

使用Scrapy自动预约51Talk外教老师

以前购买了51Talk的课程,上了一段时间没有再上了,现在课程剩两个月了,还有150节课,为了能够不浪费,自己只能含泪每天上两节课来弥补以前懒惰造成的后果,结果发现课程太难约了,尤其是好的老师还有指定的时间的课程,自己想找收藏1000+以上的老师,还要一页一页的翻,可是结果也只能是事倍功半,1000+的老师太难找了,并且我自己的预约时间更是没有课,太惨了,最近刚学了Python,想着能不能通过爬虫来预约课程,于是就有了这个脚本 51TalkBookLesson 来预约收藏1000+老师的课。

Scrapy中的CrawlSpider能够通过Rule规则提取对应的链接并进跟进请求,非常的方便,不需要我们自己一步一步的去请求每一个URL,这非常适合51Talk中老师比较多,页面比较多的情况。

由于51Talk预约课程是需要登录的,所以我使用Cookie来进行账号的识别,我们需要为每一个请求的header添加一个Cookie

1、搜索菲律宾老师的请求

2、老师的信息课程列表的详情

follow=False 是因为,老师详情页面会有一些推荐老师,这些老师可能是欧美外教,是需要使用4次次卡的,我们禁止跟进这些意外情况。

这些请求我们都需要添加Cookie,请求1是需要放在start_urls里面的,请求2的链接是通过Rule规则提取出来的,预约课程请求我则使用python的requests模块,之所以不使用scrapy的FormRequest,是因为FormRequest会被放在已经添加在Scrapy队列里的页面spider请求后面,当前面这些Spider请求完成之后,才能执行我们的预约课程,可是到那时候课程估计已经都没有了,我们需要的是当找到课程之后能够马上请求

1、在根目录下创建一个名字为cookie的文件

2、我们需要先登录51Talk网站,在开发模式下的控制台输入 document.cookie按回车,将cookie输出并粘贴到cookie文件,不需要双引号

Python中reques模块中的请求,Cookie的格式是字符串类型的,可以直接使用,而scrapy.http中的Request的Cookie格式是字典格式的,那么我们就需要将cookie文件中字符串类型cookie转换成字典,下面是转换 *** :

搜索菲律宾老师 的链接是需要放在start_urls中的,所以这些请求是 start_requests(self): *** 来生成请求的,那么就需要通过重写该 *** 并为该请求加上Cookie

老师的信息课程列表的详情 的链接是Rule规则提取的,那就需要在Rule中的 process_request 参数中的 *** 来进行处理,我写的Rule中的 process_request 的值是 request_teacher ,那就需要定义这样的一个 *** 来处理Cookie:

预约课程 的链接是需要进post的请求的,我们使用下面的 *** :

你可以修改以上参数来预约相应的的老师及课程,其中 need_book_lessons 中的参数 20170524_44 代表2017年5月24日的21:30的课程, _ 前面的代表日期,后面的代表第几节课,时间从 6 点开始,数字从 13 开始,每半个小时数字加 1 , 6:30 则为 14 , 7:00 为 15 ,依次类推,将你需要预约课程的时间添加到 need_book_lessons 中

scrapy源码的入口是哪个

当你运行 scrapy command arg 这样的命令时,这里的 scrapy 实质是一个 python 脚本,它接受参数,首先调用 scrapy/cmdline.py 中的 execute() 函数. 在 scrapy 安装目录下的 cmdline.py 文件中:

...

def execute(argv=None, settings=None):

if argv is None:

argv = sys.argv

...

if settings is None:

settings = get_project_settings()

check_deprecated_settings(settings)

...

inproject = inside_project()

cmds = _get_commands_dict(settings, inproject)

...

cmd.crawler_process = CrawlerProcess(settings)

...

...

if __name__ == '__main__':

execute()

上面的代码主要做了这么几件事:

读取scrapy.cfg配置文件

读取settings设置文件

导入相应的module爬虫模块(inside_project)

解析命令行参数(cmds:为相应的Scrapy Command对象列表)

作为整个程序的入口,其主要做的事情是解析用户爬虫的配置属性,根据传递的命令行参数,调用对应的代码来执行相应的任务.

scrapy command arg 中 command 可以为 crawl / startproject / genspider / runspider / deploy / …等命令,每一个命令在 scrapy/commands 文件夹下都有对应 command类.

对于 scrapy crawl test ,就会调用 commands/crawl.py 中的 *** 去执行相应的爬虫任务

作者:yg myth

4.python爬虫之新建 scrapy 爬虫项目(抓取和保存)

1.win10 下 win + r 打开cmd 切换新项目的目录

2.新建scrapy项目的命令:

可以利用pycharm 打开项目文件夹编辑项目

3.items.py

声明爬取的字段

4.新建scrapy 爬虫

用命令 scrapy genspider doubanmovie "movie.douban.com" 创建爬虫。

5.运行爬虫

5.1 创建运行脚本

(一)、在 scrapy.cfg 同级目录下创建 pycharm 调试脚本 run.py,避免每次运行爬虫输入密码,内容如下:

6.修改robottxt协议

修改 settings 中的 ROBOTSTXT_OBEY = True 参数为 False,因为默认为 True,就是要遵守 robots.txt 的规则, robots.txt 是遵循 Robot协议 的一个文件,它保存在网站的服务器中,它的作用是,告诉搜索引擎爬虫,本网站哪些目录下的网页不希望你进行爬取收录。在 Scrapy 启动后,会在之一时间访问网站的 robots.txt 文件,然后决定该网站的爬取范围。查看 robots.txt 可以直接网址后接 robots.txt 即可。

一般构建爬虫系统,建议自己编写Item Pipeline,就可以在open(path)选择自己的保存路径

参考: # scrapy爬虫事件以及数据保存为txt,json,mysql

7.1保存为json格式时出现乱码的解决方式:

scrapy抓取豆瓣书籍保存json文件乱码问题

中文默认是Unicode,如:

\u5317\u4eac\u5927\u5b66

在setting文件settings.py中设置:

就可以解决了

第二种解决办法

或在cmd中传入 -s FEED_EXPORT_ENCODING='utf-8'

参考:

花了2万多买的Python70个项目,现在分享给大家,练手进厂靠它了

前言:

不管学习哪门语言都希望能做出实际的东西来,这个实际的东西当然就是项目啦,不用多说大家都知道学编程语言一定要做项目才行。

这里整理了70个Python实战项目列表,都有完整且详细的教程,你可以从中选择自己想做的项目进行参考学习练手,你也可以从中寻找灵感去做自己的项目。

1、【Python 图片转字符画】

2、【200行Python代码实现2048】

3、【Python3 实现火车票查询工具】

4、【高德API+Python解决租房问题 】

5、【Python3 *** 识别】

6、【Python 破解验证码】

7、【Python实现简单的Web服务器】

8、【pygame开发打飞机 游戏 】

9、【Django 搭建简易博客】

10、【Python基于共现提取《釜山行》人物关系】

11、【基于scrapy爬虫的天气数据采集(python)】

12、【Flask 开发轻博客】

13、【Python3 图片隐写术】

14、【Python 实现简易 Shell】

15、【使用 Python 解数学方程】

16、【PyQt 实现简易浏览器】

17、【神经 *** 实现手写字符识别系统 】

18、【Python 实现简单画板】

19、【Python实现3D建模工具】

20、【NBA常规赛结果预测——利用Python进行比赛数据分析】

21、【神经 *** 实现人脸识别任务】

22、【Python文本解析器】

23、【Python3 OpenCV 视频转字符动画】

24、【Python3 实现淘女郎照片爬虫 】

25、【Python3实现简单的FTP认证服务器】

26、【基于 Flask 与 MySQL 实现番剧推荐系统】

27、【Python 实现端口扫描器】

28、【使用 Python 3 编写系列实用脚本】

29、【Python 实现康威生命 游戏 】

30、【川普撞脸希拉里(基于 OpenCV 的面部特征交换) 】

31、【Python 3 实现 Markdown 解析器】

32、【Python 气象数据分析 -- 《Python 数据分析实战》】

33、【Python实现键值数据库】

34、【k-近邻算法实现手写数字识别系统】

35、【ebay在线拍卖数据分析】

36、【Python 实现英文新闻摘要自动提取 】

37、【Python实现简易局域网视频聊天工具】

38、【基于 Flask 及爬虫实现微信 娱乐 机器人】

39、【Python实现Python解释器】

40、【Python3基于Scapy实现DDos】

41、【Python 实现密码强度检测器】

42、【使用 Python 实现深度神经 *** 】

43、【Python实现从excel读取数据并绘制成精美图像】

44、【人机对战初体验:Python基于Pygame实现四子棋 游戏 】

45、【Python3 实现可控制肉鸡的反向Shell】

46、【Python打造漏洞扫描器 】

47、【Python应用马尔可夫链算法实现随机文本生成】

48、【数独 游戏 的Python实现与破解】

49、【使用Python定制词云】

50、【Python开发简单计算器】

51、【Python 实现 FTP 弱口令扫描器】

52、【Python实现Huffman编码解压缩文件】

53、【Python实现Zip文件的暴力破解 】

54、【Python3 智能裁切图片】

55、【Python实现网站模拟登陆】

56、【给Python3爬虫做一个界面.妹子图网实战】

57、【Python 3 实现图片转彩色字符】

58、【自联想器的 Python 实现】

59、【Python 实现简单滤镜】

60、【Flask 实现简单聊天室】

61、【基于PyQt5 实现地图中定位相片拍摄位置】

62、【Python实现模板引擎】

63、【Python实现遗传算法求解n-queens问题】

64、【Python3 实现命令行动态进度条】

65、【Python 获取挂号信息并邮件通知】

66、【Python实现java web项目远端自动化更新部署】

67、【使用 Python3 编写 Github 自动周报生成器】

68、【使用 Python 生成分形图片】

69、【Python 实现 Redis 异步客户端】

70、【Python 实现中文错别字高亮系统】

最后:

以上项目列表希望可以给你在Python学习中带来帮助~

获取方式:转发 私信“1”

0条大神的评论

发表评论