小輝-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("程式執行結束....")
相關文章
- vs聯合halcon——採集影像(實時採集與單次採集)
- 抖音商家資訊採集器,抖音小店採集 電話採集
- 地圖資料採集,包括百度地圖採集,高德地圖採集,360地圖採集地圖
- 狂雨小說採集規則(書趣閣3000頁)
- tp5仿阿里小說站,後臺自動採集小說阿里
- API採集介面原始碼電商採集工具介面API原始碼
- 微信桌布小程式原始碼 自動採集小米桌布原始碼
- 覺醒向量入選2019年度 AI資料綜合採集 TOP 10AI
- 能夠採集小紅書圖片、視訊的軟體,一鍵自動批量採集到電腦上
- 自媒體素材採集平臺,採集影片文章素材
- 【GUI軟體開發】小紅書評論採集:自動採集1w多條,含二級評論!GUI
- PHP小說網站原始碼wap+pc自動採集PHP網站原始碼
- 1688阿里巴巴賣家電話採集軟體 阿里巴巴國際站採集 京東採集阿里
- Kubernetes日誌採集
- Flume採集到HDFS
- 招聘資訊採集
- .NET 音訊採集音訊
- 日誌採集/分析
- 自媒體素材採集平臺,素材採集方法都有這些
- 研究生手冊小箋 - 彭明輝教授
- 前端埋點資料採集(一)採集系統架構設計前端架構
- 【京東】商品list列表採集+類目下的商品列表資料採集
- 大眾點評點餐小程式開發經驗 – 資料採集
- 互站網48元買的小說程式原始碼 自動採集原始碼
- 豬酒店房價採集
- 採集Prestashop獨立站REST
- 日誌採集框架Flume框架
- .NET 攝像頭採集
- [20180417]vim小技巧.txt
- 程式採集裝置資料,不穩定,突然不採集, 程式崩潰
- 輕鬆採集又拍相簿裡的大量圖片,自動批量採集
- 資料採集知識分享|4大資料採集方式都有什麼?大資料
- 淘寶商家電話採集,淘寶天貓商家號碼採集軟體
- 優惠券採集資訊
- amazon產品採集資料
- phpQuery採集網站資料PHP網站
- 網址無限採集器
- Halcon採集影像Image Acquisition解析UI