Python爬蟲開發與專案實戰 1:回顧Python程式設計
https://github.com/qiyeboy/SpiderBook
第一章 回顧Python程式設計
本書採用的是Python 2.7版本
sudo apt-get install python-pip python-dev
搭建Eclipse + PyDev : 通過擴充套件PyDev外掛,Eclipse就具有了編寫Python程式的功能。
啟動Eclipse, 點選Help -> Install New Software ...
Add: name : Pydev , location: http://pydev.org/updates
Pydev直譯器配置:window -> Pydev --> Interpreters --> Python Interpreter 新增python路徑
讀檔案
try:
f = open(r'qiye.txt', 'r')
print f.read()
finally:
if f:
f.close()
上面程式碼略長,使用簡單的寫法,用with語句來代替try ... finally和close()
with open(r'qiye.txt', 'r') as fileReader:
print fileReader.read()
序列化操作:用dict 物件, 和CPickle模組(用C語言編寫,速度快)和pickle模組
# 優先匯入cPickle
try:
import cPickle as picker
except ImportError:
import pickle
import cPickle as pickle
d = dict(url='index.html', title='首頁', content='內容')
pickel.dumps(d) #dumps可以將任意物件序列化成一個str
f = open(r'dump.txt', 'wb')
pickle.dump(d, f) # dump直接將物件寫入檔案
f.close()
反序列化:loads方法或load方法f = open(r'dump.txt', 'rb')
d = pickle.load(f)
f.close()
程式和執行緒:taskManager.py
# coding: utf-8
import random, time, Queue
from multiprocessing.managers import BaseManager
# 1
task_queue = Queue.Queue()
result_queue = Queue.Queue()
class Queuemanager(BaseManager):
pass
# 2 register
Queuemanager.register('get_task_queue', callable=lambda:task_queue);
Queuemanager.register('get_result_queue', callable=lambda:result_queue);
# 3 bind port, set the password "qiye"
manager = Queuemanager(address=('', 8001), authkey='qiye')
# 4
manager.start();
# 5
task = manager.get_task_queue()
result = manager.get_result_queue()
# 6
for url in ['ImageUrl_'+bytes(i) for i in range(10)]:
print 'put task %s ...' % url
task.put(url)
#
print 'try get result...'
for i in range(10):
print 'result is %s' % result.get(timeout=10)
#
manager.shutdown()
taskWorker.py
# coding: utf-8
import time
from multiprocessing.managers import BaseManager
# 0
class QueueManager(BaseManager):
pass
# 1
QueueManager.register('get_task_queue')
QueueManager.register('get_result_queue')
# 2
server_addr = '127.0.0.1'
print('Connect to server %s...' % server_addr)
m = QueueManager(address=(server_addr, 8001), authkey='qiye')
m.connect()
# 3 獲取Queue的物件
task = m.get_task_queue()
result = m.get_result_queue()
# 4
while (not task.empty()):
image_url = task.get(True, timeout=5)
print('run task download %s...' % image_url)
time.sleep(1)
result.put('%s--->success'%image_url)
print('worker exit.')
網路程式設計
Python提供了兩個基本的Socket模組:
Socket, 提供了標準的BSD Sockets API
SocketServer, 提供了伺服器中心類,可以簡化網路伺服器的開發
Socket型別
相關文章
- Python爬蟲開發與專案實戰(1)Python爬蟲
- python爬蟲實操專案_Python爬蟲開發與專案實戰 1.6 小結Python爬蟲
- Python爬蟲開發與專案實戰--分散式程式Python爬蟲分散式
- Python爬蟲開發與專案實戰pdfPython爬蟲
- Python爬蟲開發與專案實戰(2)Python爬蟲
- 不踩坑的Python爬蟲:Python爬蟲開發與專案實戰,從爬蟲入門 PythonPython爬蟲
- python書籍推薦-Python爬蟲開發與專案實戰Python爬蟲
- 視訊教程-Python網路爬蟲開發與專案實戰-PythonPython爬蟲
- Python爬蟲開發與專案實戰 4: HTML解析大法Python爬蟲HTML
- Python爬蟲開發與專案實踐(3)Python爬蟲
- Python開發爬蟲專案+程式碼Python爬蟲
- python爬蟲-33個Python爬蟲專案實戰(推薦)Python爬蟲
- 完整的python專案例項-《Python爬蟲開發與專案實戰》pdf完整版Python爬蟲
- Python網路爬蟲實戰專案大全 32個Python爬蟲專案demoPython爬蟲
- python爬蟲實戰教程-Python爬蟲開發實戰教程(微課版)Python爬蟲
- python專案開發例項-Python專案案例開發從入門到實戰——爬蟲、遊戲Python爬蟲遊戲
- python3網路爬蟲開發實戰_Python3 爬蟲實戰Python爬蟲
- Python網路爬蟲實戰小專案Python爬蟲
- Python網路爬蟲實戰專案大全!Python爬蟲
- Python靜態網頁爬蟲專案實戰Python網頁爬蟲
- python3網路爬蟲開發實戰_Python 3開發網路爬蟲(一)Python爬蟲
- 《python 爬蟲開發與實戰》html基礎詳解Python爬蟲HTML
- Python 3網路爬蟲開發實戰Python爬蟲
- 精通 Python 網路爬蟲:核心技術、框架與專案實戰Python爬蟲框架
- Python 爬蟲實戰Python爬蟲
- Python爬蟲入門學習實戰專案(一)Python爬蟲
- 北郵《Python程式設計與實踐》——爬蟲學習Python程式設計爬蟲
- python爬蟲開發微課版pdf_Python爬蟲開發實戰教程(微課版)Python爬蟲
- Python爬蟲開源專案合集Python爬蟲
- 《Python3網路爬蟲開發實戰》教程||爬蟲教程Python爬蟲
- python爬蟲初探--第一個python爬蟲專案Python爬蟲
- Python3網路爬蟲開發實戰Python爬蟲
- 課程設計:python_網路爬蟲專案Python爬蟲
- Python學習筆記——爬蟲之Scrapy專案實戰Python筆記爬蟲
- 32個Python爬蟲實戰專案,滿足你的專案慌Python爬蟲
- [Python3網路爬蟲開發實戰] 分散式爬蟲原理Python爬蟲分散式
- 2019最新崔慶才python3網路爬蟲開發專案實戰(完整)Python爬蟲
- Python3網路爬蟲開發實戰——第1章 開發環境Python爬蟲開發環境
- 《python3網路爬蟲開發實戰》--pyspiderPython爬蟲IDE