使用python编写一个网站爬虫程序,支持参数如下:

spider.py -u url -d deep -f logfile -l loglevel(1-5) --testself -thread number --dbfile filepath --key=”HTML5”

参数说明
-u 指定爬虫开始地址
-d 指定爬虫深度
–thread 指定线程池大小,多线程爬取页面,可选参数,默认10
–dbfile 存放结果数据到指定的数据库(sqlite)文件中
–key 页面内的关键词,获取满足该关键词的网页,可选参数,默认为所有页面
-l 日志记录文件记录详细程度,数字越大记录越详细,可选参数,默认spider.log
–testself 程序自测,可选参数

功能描述
1、指定网站爬取指定深度的页面,将包含指定关键词的页面内容存放到sqlite3数据库文件中
2、程序每隔10秒在屏幕上打印进度信息
3、支持线程池机制,并发爬取网页
4、代码需要详尽的注释,自己需要深刻理解该程序所涉及到的各类知识点
5、需要自己实现线程池

提示
提示1:使用re urllib/urllib2 beautifulsoup/lxml2 threading optparse Queue sqlite3 logger doctest等模块
提示2:注意是“线程池”而不仅仅是多线程
提示3:爬取sina.com.cn两级深度要能正常结束

建议程序可分阶段,逐步完成编写,例如:
版本1: Spider1.py -u url -d deep
版本2:Spider3.py -u url -d deep -f logfile -l loglevel(1-5) --testself
版本3:Spider3.py -u url -d deep -f logfile -l loglevel(1-5) --testself -thread number
版本4:剩下所有功能

1.解析命令行模块optparse(optparse现在不再更新了,更新版本叫 argparse)

def parse():parser = OptionParser(description="This script is used to crawl analyzing web!")# 在用户请求帮助时打印它,并会格式化以适合当前终端宽度parser.add_option("-u", "-url", dest="urlpth", action="store",help="Path you want to fetch", metavar="www.sina.com.cn")parser.add_option("-d", "-deep", dest="depth", action="store", type="int",help="Url path's deep, default 1", default=1)parser.add_option("-k", "-key", dest="key", action="store",help="You want to query keywords, For example 'test'")parser.add_option("-f", "-file", dest="logfile", action="store",help="Record log file path and name, default spider.log",default='spider.log'),parser.add_option("-l", "-level", dest="loglevel", action="store",type="int", help="Log file level, default 1(CRITICAL)",default=1),parser.add_option("-t", "-thread", dest="thread", action="store",type="int", help="Specify the thread pool, default 10",default=10),parser.add_option("-q", "-dbfile", dest="dbpth", action="store",help="Specify the the sqlite file directory and name, \default  test.db", metavar='test.db')parser.add_option("-s", "-testself", dest="testself", action="store_true",help="Test myself", default=False)(options, args) = parser.parse_args()return options

基本用法

  1. 载入OptionParser类,新建对象: OptionParser()
  2. 添加选项: add_option(…)
  3. 参数解析: parse_args() 默认是使用 sys.argv[1:] 作为参数, 也可以传递一个命令行参数列表: parse_args(list).

add_option方法参数含义

  • dest:用于保存输入的临时变量,其值通过options的属性访问
  • help:用于生成帮助信息
  • action:指导程序遇到命令行参数怎么样处理,三种值可选。
    • store:读取参数,如果参数符合type要求,则将值传递给dest变量。强制要求后面提供参数
    • store_true/store_false: 作为标记使用,设置dest变量的值为True或False。后面可以不跟参
  • metavar:在打印帮助文本时使用的选项参数的替代值。
  • default:给dest默认值
  • type:检查命令行参数数据类型,有string,int,float等

parse_args():

  • options:它是一个对象,保存有命令行参数值。只要知道命令行参数名,如 input,就可以访问其对应的值:options.input
  • args:它是没被解析的命令行参数的列表。

参考链接:
https://www.jianshu.com/p/fef2d215b91d 【简单易懂,argparse模块】
https://www.jianshu.com/p/bec089061742 【详解optparse模块】
https://docs.python.org/3.7/library/optparse.html#optparse-tutorial【官网】

知道创宇的爬虫面试题相关推荐

  1. python os 检查同名_2020Python 爬虫面试题,高薪就业Python面试必看

    先来一份完整的Python爬虫工程师关于Python面试的考点: 搞定这套 Python 爬虫面试题,Python面试 so easy 一. Python 基本功 1.简述Python 的特点和优点 ...

  2. python网络爬虫面试题,搞定这套Python爬虫面试题(面试会so easy)

    搞定这套Python爬虫面试题(面试会so easy) 来源:中文源码网    浏览: 次    日期:2019年11月5日 [下载文档:  搞定这套Python爬虫面试题(面试会so easy).t ...

  3. python高阶面试题_Python 爬虫面试题 170 道:2019 版

    通过本场 Chat,你将获得如下知识点:掌握 Python 的基础语法 语法常见的 Python 应用场景 掌握 Python 闭包的使用以及装饰器的使用 生成器和迭代器的使用 常见的设计模式的使用 ...

  4. 170 道 Python 爬虫面试题(2019 版)

    引言 最近在刷面试题,所以需要看大量的 Python 相关的面试题,从大量的题目中总结了很多的知识,同时也对一些题目进行拓展了,但是在看了网上的大部分面试题不是很满意,一个是有些部分还是 Python ...

  5. Python 爬虫面试题 170 道:2019 版

    引言 最近在刷面试题,所以需要看大量的 Python 相关的面试题,从大量的题目中总结了很多的知识,同时也对一些题目进行拓展了,但是在看了网上的大部分面试题不是很满意,一个是有些部分还是 Python ...

  6. 要考试了,通过爬虫获取试题,最后再看2小时

    需求分析 前情回顾:写这篇文章的那天正好是6月6日,考试的前一天.那个时候,我原本是希望能够通过爬虫获取往年试题用于回顾的,不过由于当天某些缘故,连续6次没有通过,所以很多内容被删减了.这段内容为后期 ...

  7. Python 爬虫 面试题

    目录 理论 笔试或面试记录题 理论 爬虫遵循的协议:robot协议 定义:网络爬虫排除标准. 作用:告诉搜索引擎哪里可以爬,哪里不可以爬. 爬虫分类 (1)通用爬虫:搜索引擎的主要组成,作用就是将互联 ...

  8. 搞定这套 Python 爬虫面试题,面试会 so easy

    点击上方"码农突围",马上关注 这里是码农充电第一站,回复"666",获取一份专属大礼包 真爱,请设置"星标"或点个"在看&quo ...

  9. 常见的python与爬虫面试题准备好了

    我们在这里也为正在找工作的同学精心准备了一套面试题,包含python以及爬虫等相关内容.更多python面试题后台发送python面试获取. 一.python常见面试题 1.简述any()和all() ...

最新文章

  1. 20W奖金+实习机会:阿里巴巴达摩院最新时间序列赛事来了!
  2. “VT-x is disabled in BIOS”的解决办法【Android Studio】【操作环境:win 7 台式机】【查看Android Studio版本】
  3. 北邮OJ 1021. 16校赛-Stone Game
  4. 文档中快速输入日期时间的方法
  5. codeforces 50A-C语言解题报告
  6. 听障学生计算机课本,面向听障学生程序设计的计算机教学辅助系统
  7. bmp180气压传感器工作原理_各种传感器工作原理汇总
  8. 面试官系统精讲Java源码及大厂真题 - 05 ArrayList 源码解析和设计思路
  9. oracle ns,RAC到单实例SWITCHOVER
  10. python int函数和二进制、八进制、十进制转换
  11. The Top 8 Security and Risk Trends We’re Watching
  12. SNW2010中国大会 ZDNet现场报道
  13. 网易云 计算机,网易云音乐电脑版2.7.4.198336_网易云音乐 - 系统之家
  14. 《DSP:matlab释义与实现》学习笔记|freqz()函数详解
  15. P2构型并联混合动力汽车Cruise整车仿真模型
  16. python flag用法_Python之FLAGS用法
  17. 架构师之路-秒杀系统优化思路
  18. CSDN每日一练:蛇形矩阵
  19. 基于二哈实现多人人脸学习和识别
  20. android 开源远程工具项目scrcpy 简单使用

热门文章

  1. Altium Designer16 软件汉化步骤
  2. 初中数学结合计算机教学设计,初中数学教学设计中多媒体技术的运用
  3. srsLTE安装、运行及测试
  4. NIST加密标准是什么意思?
  5. FL Studio 插件使用教程 —— 3x Osc(上)
  6. 汽车日行灯做E-mark认证必须接受要工厂审核吗?
  7. c语言和mysql实现超市的管理_C语言编写的超市管理系统
  8. Hadoop实战问题记录
  9. 多个VLC播放器同步播放本地VCam视频流
  10. 【简历制作合集】面试时到底是用彩打简历还是黑白简历更出彩呢?|智测优聘出品