目录

1. 简单地导入自己写的.py文件

2. 将自己写的多个.py文件规范化成外部类,并创建__init__.py

3. 将自己的程序封装成外部包


1. 简单地导入自己写的.py文件

将a.py与b.py放在同一项目路径下,然后在另一个b.py文件中执行import a.py,然后我们就可以在b.py中调用a.py中的函数了

import aa.py()

参考:https://jingyan.baidu.com/article/08b6a591810daf14a8092204.html

2. 将自己写的多个.py文件规范化成外部类,并创建__init__.py

参考:https://github.com/fifths/python_baike_spider/tree/master/baike_spider

  • html_downloader.py
import urllib.requestclass HtmlDownloader(object):def download(self, url):if url is None:return Noneresponse = urllib.request.urlopen(url)if response.getcode() != 200:return Nonereturn response.read()
  • html_parser.py
from bs4 import BeautifulSoup
import re
import urllib.parseclass HtmlParser(object):def _get_new_urls(self, page_url, soup):new_urls = set()links = soup.find_all('a', href=re.compile(r"/view/\d+\.htm"))for link in links:new_url = link['href']new_full_url = urllib.parse.urljoin(page_url, new_url)new_urls.add(new_full_url)return new_urlsdef _get_new_data(self, page_url, soup):res_data = {}# urlres_data['url'] = page_urltitle_node = soup.find('dd', class_="lemmaWgt-lemmaTitle-title").find('h1')res_data['title'] = title_node.get_text()# lemma-summarysummary_node = soup.find('div', class_="lemma-summary")res_data['summary'] = summary_node.get_text()return res_datadef paser(self, page_url, html_cont):if page_url is None or html_cont is None:returnsoup = BeautifulSoup(html_cont, 'html.parser', from_encoding='utf-8')new_urls = self._get_new_urls(page_url, soup)new_data = self._get_new_data(page_url, soup)return new_urls, new_data
  • spider_main.py
from baike_spider import url_manager
from baike_spider import html_downloader
from baike_spider import html_parser
from baike_spider import html_outputerclass SpiderMain(object):def __init__(self):self.urls = url_manager.UrlManager()self.downloader = html_downloader.HtmlDownloader()self.parser = html_parser.HtmlParser()self.outputer = html_outputer.HtmlOutputer()def craw(self, root_url):count = 1self.urls.add_new_url(root_url)while self.urls.has_new_url():try:new_url = self.urls.get_new_url()print("craw %d : %s" %(count, new_url))html_cont = self.downloader.download(new_url)new_urls, new_data = self.parser.paser(new_url, html_cont)self.urls.add_new_urls(new_urls)self.outputer.collect_data(new_data)if count == 10:breakcount = count + 1except:print('craw failed')self.outputer.output_html()if __name__ == '__main__':root_url = "http://baike.baidu.com/view/21087.htm"obj_spider = SpiderMain()obj_spider.craw(root_url)

3. 将自己的程序封装成外部包

参考:http://www.zzvips.com/article/84558.html; https://www.cnblogs.com/smileyes/p/7657591.html; https://www.cnblogs.com/mangM/p/11619247.html

python程序导入import、规范化和封装自己写的.py文件相关推荐

  1. python程序多次运行_Python内怎么使同一个.py文件多次运行?

    原博文 2020-08-03 15:57 − 当在多个客户端同时连接一个服务端时需要同时运行多个客户端所在的.py文件,但默认上我们运行了一次后如果再想运行这个.py文件,则被要求停下当前运行的.py ...

  2. python程序编译之后、找不到生成的pyc文件_为什么主要的可运行的Python脚本没有被编译为pyc文件,如模块?...

    当模块加载时,py文件被"字节编译"为pyc文件.时间戳记记录在pyc文件中. 这样做不会使其运行速度更快,但加载速度更快. 因此,当您加载它们时,"字节编译" ...

  3. python import自己写的.py文件

    1. 简单地导入自己写的.py文件 参考:https://jingyan.baidu.com/article/08b6a591810daf14a8092204.html 2. 将自己写的多个.py文件 ...

  4. python调用自己写的py文件

    目录 python如何调用自己写的py文件呢? 如果是不同目录怎么调用呢? 如果需要调用的多个文件在多个目录呢? 关于__init__.py的解释 关于sys.path的解释 python如何调用自己 ...

  5. 【Android 逆向】使用 Python 代码解析 ELF 文件 ( PyCharm 中创建 Python 程序 | 导入 ELFFile 库 | 解析 ELF 文件 )

    文章目录 一.PyCharm 中创建 Python 程序 二.导入 ELFFile 依赖库 三. 解析 ELF 文件 四. 博客源码 一.PyCharm 中创建 Python 程序 在 PyCharm ...

  6. 怎么把python程序发给别人_想把你写的Python程序发给别人用?打包成exe啊!

    前言 大家好,欢迎来到编程教室! 当你学了一段时间Python,终于写出一个小游戏的时候,是不是很想发给你的小伙伴分享一下你的成果?但是,如果直接将xx.py文件发给别人,别人通常是不能直接运行的,他 ...

  7. python引入自己写的文件_python引入自己写的Py文件

    原博文 2020-04-23 23:40 − 1.新建一个test_a.py文件 def print_sum(a,b): if(type(a)==int or type(b) == int): pri ...

  8. pycharm中pyinstaller封装打包多个py文件的过程

    首先在pycharm设置中找到自己的项目, 然后在左下角安装,搜索pyinstaller 点击安装包后即可 安装完毕后,开始封装环节 [Python打包成exe]快速将多个py文件及其他文件打包为ex ...

  9. python程序如何做界面_python是如何写界面程序的?

    展开全部 python做界面2113还是用PYQT吧 PYQT支持PY2和PY3 wxpython仅仅支5261持PY2 而python自带的4102tkinter实在是很难1653弄#!/usr/b ...

最新文章

  1. AI指数评论:提防“路灯谬误”,开启全球多方对话
  2. C#中override和overload的区别
  3. 扫地机器人湿地_口碑最好,用户认可度最高,浦桑尼克新款扫地机M7 MAX上手体验...
  4. PyQt5 图片兼容性问题:libpng warning: bKGD: invalid.,原因及解决办法。
  5. 渗透攻击(NT/2000系统)
  6. Meeting HDU - 5521
  7. 互联网晚报 | 12月27日 星期一 | 蚂蚁消费金融增资220亿;小米MIUI13正式官宣;《蜘蛛侠3》登顶全球年度票房冠军...
  8. 跳过微信内置浏览器缓存
  9. 紧急预警:wls9_async_response.war组件漏洞的延续
  10. Android问题-selection contains a component,button7,introduced in an ancestor and cannot be deleted....
  11. NFT平台 NFTb将推出新版本,支持社会公益事业
  12. .NET——NPOI操作excel
  13. IIS7下访问ashx页面,显示404
  14. bc8android汽车中控屛功能有哪些,安卓大屏功能强大 卡仕达顺车机一机全能
  15. C# 中的Finalize 和Dispose(bool disposing)和 Dispose()
  16. box-sizing失效情况
  17. 使用tensorflow构建一个卷积神经网络
  18. 9月更新!7个超好用的功能上线了!EasyOps®UI8.0更有大变动
  19. 贝叶斯系列:(三)贝叶斯网络
  20. 张凌杰 html5,武汉理工大学第四届学位评定委员会第三次会议授予博士、硕士学位名单...

热门文章

  1. OpenCV学习笔记——Mat类型数据存储
  2. [转][Timer学习]wall time和monotonic time
  3. Windows 服务全攻略(1)
  4. CSP认证 201503-3 节日[C++题解]:模拟、枚举、日期题、日期模板题
  5. PAT甲级1101 Quick Sort:[C++题解]DP、快速排序划分个数、快排
  6. linux signal 符号表,铁路信号图形符号
  7. 《剑指offer》c++版本 18.删除链表的结点
  8. excel 树结构json_写一个上传excel表格,解析成 json 的接口
  9. 初学c++基础知识——第一个c++程序
  10. bootstrap 点击加号 表格_bootstrap中的输入组按钮,点击加号加1,减1子