python的爬蟲小模版

2021-09-25 07:08:24 字數 3445 閱讀 2602

注釋不刪也有一點意義 哈哈

解釋一下 倆個模板幾乎差不多 但是有點不同 ,問我為什麼不合二為一 哈哈 為了給新手看 合併很簡單 你們可以試試

主要看思路 ,自己寫乙個才能更了解,以後爬蟲就用你自己的 ,效率提高

解釋一下 : 第乙個類 爬取 第一頁 第二頁 第一頁 這樣的東西

第二個類 爬取 第一頁 第二頁 第二頁 中的若干 —》 可以diy一下就是全站爬取了

from abc import abcmeta,abstractmethod

#import redis

import threading

import requests

import re

from tools.headers import ua

#db=redis.strictredis(host='127.0.0.1',port=6379,password=none,decode_responses=true)

'''def move(proxies):

try:

proxy=re.search('//(.*?).,',str(proxies)).group(1)

db.zadd('temp',100,proxy)

db.zrem('window',proxy)

except exception as e:

print(e)

'''def move(xx):

pass

class crawl(metaclass=abcmeta):

def get_proxy(self):

proxy=requests.get('').text

proxies=

return proxies

def get_page(self):

yield from range(1,100000)

@abstractmethod

def get_url(self):#此處返回的是乙個迭代器

pass

@abstractmethod

def parse(self,r,page):#此處獲得request物件和頁數

print('影象成功')

except exception as e:

move(proxies)

proxies=self.get_proxy()

return self.down(img,name,proxies)

def get_html(self,url,page):

try:

proxies=self.get_proxy()

r=requests.get(url,headers=,proxies=proxies,timeout=10)

return self.parse(r,page,proxies)

except exception as e:

move(proxies)

return self.get_html(url,page)

def get_page(self):

yield from range(1,1000)

def start(self):

threads=

url_list=self.get_url()

page_list=self.get_page()

try:

while url_list:

for thread in threads:

if not thread.is_alive():

threads.remove(thread)

while len(threads)<14 and url_list:

url_=next(url_list)

page_=next(page_list)

thread=threading.thread(target=self.get_html,args=(url_,page_))

thread.setdaemon(true)

thread.start()

except stopiteration as e:

print(e)

finally:

print('end')

python爬蟲小程式 python爬蟲學習小程式

coding utf 8 name 模組1 purpose author mrwang created 18 04 2014 licence import urllib def main url html urllib.urlopen url print html.read 讀取內容 print h...

python爬蟲小例子

如下 r.raise for status 的功能是判斷返回的狀態碼,如果狀態碼不是200 如404 則丟擲異常 來檢視user agent屬性。requests庫寫的 預設user agent是 python requests x.xx.x x表示版本號 如果訪問不成功,可嘗試修改 user ag...

Python小爬蟲, 多執行緒

下面是初學了多執行緒,下手寫的乙個小爬蟲,個人看著不那麼優雅,無奈水平不夠 望您發現有誤或者有改進的地方,能指正 import urllib.request as ur import re from threading import thread as tt from queue import qu...