遞迴爬取某鏈結中的url

2022-09-01 03:00:10 字數 2475 閱讀 6347

# /usr/bin/env python3

# _*_ coding:utf-8 _*_

# auther: saucerman

# project:

"""decription : 全站url爬取指令碼

"""import re

import time

import sys

import requests

try :

import tldextract

except:

print('module tldextract not fount \nyou can try pip install tldextract')

sys.exit()

def domain_get():

'''接收要爬取的**url

self.domain = domain # 爬取的網域名稱

self.depth = depth # 爬取的深度

self.urls_all = set() # 爬取的結果

self.key = key # 頂級網域名稱,用於排除外鏈

def page_spider(self, url):

'''爬取url中的所有鏈結

'''try:

r = requests.get(url, headers=kv, timeout = 2)

pagetext=r.text

pagelinks = re.findall(r'(?<=href=\").*?(?=\")|(?<=href=\').*?(?=\')',pagetext)

except:

return set()

# 接下來對爬取的鏈結進行處理

# 1、先去除不同域的鏈結

url_list = set()

for url in pagelinks:

if self.key in url:

url_list.add(url)

# 2、再對鏈結進行去重處理

url_list = set(url_list)-self.urls_all

self.urls_all.update(url_list)

return url_list # 返回集合

def run(self):

url_list = set([self.domain]) # 第一次爬取原始url的鏈結

while self.depth >= 1: # 每一次深度的爬取都會爬取url_list的所有鏈結

print("倒數第%d輪"%self.depth)

url_list_tmp = set()

for url in url_list:

url_list_tmp.update(self.page_spider(url))

url_list = url_list_tmp

self.depth = self.depth -1

file=open('result.txt','w')

for url in self.urls_all:

file.write(url)

file.write('\n')

file.close()

if __name__ == '__main__':

time.perf_counter()

domain = domain_get()

print('domain:', domain)

key_tmp = tldextract.extract(domain)

# 用於排除外鏈,爬取的url不包含key的都會被捨棄。

# ''==>'www.xiaogeng.com.cn'

key = key_tmp.subdomain + '.' + key_tmp.domain+'.' + key_tmp.suffix

print('key:', key)

print('開始爬取...\n')

spider = spider(domain = domain, key = key, depth = 3)

spider.run()

print('結果已儲存至result.txt中')

print('time:', time.perf_counter())

爬取frame內的多條鏈結

python爬網頁功能強大是眾所周知,一直想試試,卻一直沒有決心做。最近收到乙個任務,爬取一些go的資料。要爬的 是go語言標準庫,首先分析下需要用到的知識 如下 coding utf8 import requests from bs4 import beautifulsoup from selen...

爬蟲 智聯爬取 拼接鏈結的演示

import requests import time import numpy as np import pandas as pd 標頭檔案 headers ip proxies 資料集合 infos 基礎鏈結 url 需求鏈結 base url start 300 pagesize 60 cit...

爬取某瓣電影中你好,李煥英電影的短評並生成詞云

要爬取的目標鏈結 提取碼 8888 下面是完整的 import requests 請求庫,需要安裝 from fake useragent import useragent 構造user agent的庫,需要安裝 from lxml import etree 使用xpath 需要匯入該庫,需要安裝 ...