python编写的简单的网络蜘蛛,使用了chardet库来解码,其中的关键技术为多线程控制时间、正则表达式解析html

import re
import urllib.request
import chardet
import _thread
import timedef time_control():global TIME_Cwhile 1:time.sleep(1)if time.time() - TIME_C > 10:TIME_C = time.time()_thread.interrupt_main()
def put_in(from_url):global S, url_list, TIME_Ctry:TIME_C = time.time()temp=urllib.request.urlopen(from_url)if temp.status == 200:ts = temp.read()TIME_C = time.time()S = ts.decode(chardet.detect(ts)['encoding'], 'replace')pattern = re.compile(r'"https?://[^\b\n<>"]*?pku.edu.cn')NUM = 0TIME_C = time.time()g = pattern.search(S[NUM:])while True:TIME_C = time.time()g = pattern.search(S[NUM:len(S)])if g == None:breakNUM += g.span()[1]if url_list.count(g.group(0)[1:len(g.group(0))]) == 0:url_list.append(g.group(0)[1:len(g.group(0))])print(g.group(0)[1:len(g.group(0))])except KeyboardInterrupt:TIME_C = time.time()print("\nTime out\n")returnexcept TimeoutError:print("\nTime out\n")returnexcept urllib.error.URLError:returndef ergodic_list(start_point):global url_listnew_start_point = len(url_list)for i in url_list[start_point:]:print("\nfrom "+i+"\n"+"-"*10)put_in(i)if len(url_list) > new_start_point:ergodic_list(new_start_point)if __name__ == '__main__':TIME_C = time.time()_thread.start_new_thread(time_control,())url_list = ['http://www.pku.edu.cn/sitemap/bzdt.html']S = ''ergodic_list(0)

python网络蜘蛛相关推荐

  1. 【Python网络蜘蛛】:基础 - HTTP基本原理

    文章目录 1.1 HTTP基本原理 1. URI和URL 2. HTTP和HTTPS 3. HTTP请求过程 4. 请求 5. 响应 1.1 HTTP基本原理 1. URI和URL URI为统一资源标 ...

  2. 【Python网络蜘蛛 · 6】:明文和密文的转换、json模块的使用、jsonpath模块的使用(附源代码)

    目录 一.明文和密文的转换 1.什么是明文密文? 2.明文和密文之间的转换 代码演示如下 二.json模块的使用 1.什么是json? 2.json字符串和字典的转换 代码演示: 三.jsonpath ...

  3. 【Python网络蜘蛛】:基础 - 爬虫的基本原理

    文章目录 爬虫概述 能爬的数据 JavaScript渲染的页面 爬虫概述 获取网页 在HTTP基本原理中讲了请求和响应的概念,向网站的服务器发送一个请求,服务器返回的响应体便是网页源码.关键部分即构造 ...

  4. 【Python网络蜘蛛】基础 - 多线程和多进程的基本原理

    文章目录 多线程和多进程的基本原理 多线程的含义 并发和并行 Python中的多线程和多进程 多线程和多进程的基本原理 在编写爬虫程序的时候,为了提高爬取效率,我们可能会同时运行多个爬虫任务,其中同样 ...

  5. 【Python网络蜘蛛 · 3】:post请求、模拟金山翻译(附源代码)

    目录 一.post请求 1.post请求出现的场景 2.如何发送post请求 3.get和post的区别 二.模拟金山翻译 1.实现思路 2.具体实现步骤 3.实现源代码 一.post请求 1.pos ...

  6. 【Python网络蜘蛛 · 4】:代理ip的了解和基本使用、查看代理ip的有效性(附源代码)

    目录 一.代理IP的了解和基本使用 1.代理IP 正向代理 反向代理 2.代理IP的分类 3.代理IP的基本使用 第一种用法:https 第二种用法:http 二.查看代理IP的有效性 1.查看自己的 ...

  7. 精通Python网络爬虫:核心技术、框架与项目实战.1.1 初识网络爬虫

    摘要 网络爬虫也叫做网络机器人,可以代替人们自动地在互联网中进行数据信息的采集与整理.在大数据时代,信息的采集是一项重要的工作,如果单纯靠人力进行信息采集,不仅低效繁琐,搜集的成本也会提高.此时,我们 ...

  8. python网络爬虫的基本步骤-详解Python网络爬虫功能的基本写法

    网络爬虫,即Web Spider,是一个很形象的名字.把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛. 1. 网络爬虫的定义 网络蜘蛛是通过网页的链接地址来寻找网页的.从网站某一个 ...

  9. python爬虫抓取图片-python网络爬虫源代码(可直接抓取图片)

    在开始制作爬虫前,我们应该做好前期准备工作,找到要爬的网站,然后查看它的源代码我们这次爬豆瓣美女网站,网址为:用到的工具:pycharm,这是它的图标 ...博文来自:zhang740000的博客 P ...

  10. Python 网络爬虫 001 (科普) 网络爬虫简介

    Python 网络爬虫 001 (科普) 网络爬虫简介 1. 网络爬虫是干什么的 我举几个生活中的例子: 例子一: 我平时会将 学到的知识 和 积累的经验 写成博客发送到CSDN博客网站上,那么对于我 ...

最新文章

  1. Ubuntu 14.04上安装WineTMQQ2013麒麟版
  2. 张钹、朱松纯、黄铁军等同台激辩:人工智能的“能”与“不能”
  3. Java报表工具FineReport导出EXCEL的四种API
  4. 面试造飞机系列:面对Redis持久化连环Call,你还顶得住吗?
  5. 填充磁盘空间的工具和方法
  6. Office协同办公:SkyDrive
  7. Arduino 控制舵机
  8. “已删除的应用” 流量高
  9. [算法设计题]输出三角形图形
  10. (241)IC验证工程师技能树
  11. python之 模块与包
  12. html vba 单元格 格式,VBA设置单元格格式之——边框
  13. android使用App Link或者URL Scheme直接跳转第三方app信息收集
  14. 小米笔记本关闭UEFI secure boot
  15. Photoshop:PS如何实现放大图片不模糊
  16. 如何设计一份令人舒服的PPT,每次看都有新的idea
  17. blender动作_Blender实现小人行走
  18. vscode使用ssh连接远程Ubuntu服务器(记录)
  19. poj入门水题整理1--按刷题顺序解释
  20. 【100%通过率】华为OD机试真题 C++ 实现【高矮个子排队】【2023 Q2 | 100分】

热门文章

  1. python登录斗鱼_Python---20行代码爬取斗鱼平台房间数据(下)
  2. 麟龙指标通达信指标公式源码_麟龙饱和度公式源码副图指标公式-通达信公式 -程序化交易(CXH99.COM)...
  3. 局域网文件共享服务器无法写入,局域网共享文件禁止复制、共享文件只读不能保存法...
  4. 音频文件--PCM、 WAV、 MP3及AMR格式分析
  5. MATLAB打开USB摄像头的操作以及常见问题
  6. STC89C52单片机蜂鸣器介绍以及《卡农》歌曲代码示例
  7. 三维点云数据处理软件供技术原理说明_十大点云数据处理技术梳理
  8. 菜鸟教程java在线编辑器_HTML 编辑器
  9. Linux常用命令,Linux常用基本命令大全
  10. 20220527_数据库过程_语句留档