小輝-top採集.txt
# -*- coding:utf-8 -*-
import requests,threading,random,string
from lxmlimport etree
from queueimport Queue
from timeimport sleep
from threadingimport Thread
# 儲存檔案的函式
def savefile(savepath,content):
fp= open(savepath,'a+',encoding='utf8',newline="",errors='ignore')
fp.write(content+"\n")
fp.close()
#生成隨機3-6位字首
def GetPassword():
# digits生成所有數字 ascii_letters生成所有字母
slcNum=[random.choice(string.digits+string.ascii_lowercase)for iin range(random.randint(3,6))]
random.shuffle(slcNum)# 將序列的所有元素隨機排序
getPwd=''.join([ifor iin slcNum])
return getPwd
lock= threading.RLock()# 多個執行緒訪問共享資料
def getHTMLText(urlqueue):
global lock
while urlqueue.qsize()> 0:
if lock.acquire(): # 給可能出現資料訪問衝突的程式碼塊上鎖
urls_line= urlqueue.get()# 獲取要爬取的url地址
for iin range(1,101):
print(" <%s> 域名第 <%s> 次採集 " % (urls_line, i))
url_line= GetPassword()
url= "http://" + url_line+ '.' + urls_line+ "/"
# print(url)
while True:
try:
headers= {
'User-Agent': 'Mozilla/5.0 (compatible; Baiduspider-render/2.0; +http://www.baidu.com/search/spider.html)'
}
r= requests.get(url=url,headers=headers,verify=True,timeout=5)# 證書驗證設為FALSE
r.raise_for_status()#不是200,丟擲異常requests.HTTPError
r.encoding= r.apparent_encoding
print("採集網頁的狀態碼:%s" %r.status_code)
print("採集網頁的URL:%s" %r.url)
html_title= "".join(etree.HTML(r.text).xpath('//title/text()'))
print("採集網頁的標題:%s" %html_title)
title_path= './save_title.txt'
savefile(title_path, html_title)
print("爬取完成:對%s目標地址採集完成" % url)
print("*"*70)
if r.status_code== 200:
break
except Exception as ex:
print(Exception,":", ex)
sleep(1)
if __name__== '__main__':
url_queue= Queue()
seen_queue= set()
filepath= "./小輝-top採集.txt"
txtfile= [line.strip()for linein open(filepath,encoding="GB2312").readlines()]
for linein txtfile:
if line:
line= line.strip()
url_queue.put(line)
seen_queue.add(line)# set集合新增內容
#print(url_queue.qsize())
threads= []# 宣告一個變數,儲存多個執行緒
#threads_num = 50 # 宣告一個變數,控制啟動多少個執行緒
threads_num= int(input("請輸入執行緒數:"))
for ctin range(0,threads_num): # 建立執行緒物件,並啟動執行緒
current_thread= threading.Thread(target=getHTMLText,args=(url_queue,))# 建立執行緒物件
current_thread.setDaemon(True)# 設定守護程式
threads.append(current_thread)# 將執行緒儲存在列表中
current_thread.start()
for tin threads: # 讓所有的執行緒join,就是讓主執行緒等待所有子執行緒執行結束再推出
t.join()
print("程式執行結束....")
相關文章
- 微信小程式無埋點資料採集方案微信小程式
- 地圖資料採集,包括百度地圖採集,高德地圖採集,360地圖採集地圖
- 微信桌布小程式原始碼 自動採集小米桌布原始碼
- API採集介面原始碼電商採集工具介面API原始碼
- PHP採集商家資訊及採集方法概述(下)PHP
- PHP採集商家資訊及採集方法概述(上)薦PHP
- dede採集教程
- 自媒體素材採集平臺,採集影片文章素材
- 覺醒向量入選2019年度 AI資料綜合採集 TOP 10AI
- top使用小記
- PHP使用DOMDocument採集PHP
- 日誌採集/分析
- .NET 音訊採集音訊
- 自媒體素材採集平臺,素材採集方法都有這些
- 【京東】商品list列表採集+類目下的商品列表資料採集
- 1688阿里巴巴賣家電話採集軟體 阿里巴巴國際站採集 京東採集阿里
- 淘寶商家電話採集,淘寶天貓商家號碼採集軟體
- 前端埋點資料採集(一)採集系統架構設計前端架構
- 大眾點評點餐小程式開發經驗 – 資料採集
- 大眾點評點餐小程式開發經驗 - 資料採集
- 採集Prestashop獨立站REST
- 日誌採集框架Flume框架
- PHP - curl實現採集PHP
- AWR資料採集方法
- Oracle AWR資料採集Oracle
- .NET 攝像頭採集
- 地輝
- 輕鬆採集又拍相簿裡的大量圖片,自動批量採集
- 資料採集知識分享|4大資料採集方式都有什麼?大資料
- 程式採集裝置資料,不穩定,突然不採集, 程式崩潰
- 淘寶新店採集軟體當天新開店鋪採集器 新店抓取工具
- phpQuery採集網站資料PHP網站
- Kubernetes日誌採集
- 人員基礎資訊採集
- 遊戲平臺採集資料遊戲
- amazon產品採集資料
- 圖書網站資訊採集網站
- 工商資訊資料採集思路