核心内容摘要
在线直播深夜,关键动作持续,成果自然堆积!游戏拥有完善的世界观设定,让这款手游app的冒险旅程更有意义和探索价值。加入中韩无矿砖2020关键动作重复,成果稳定产出!内置排行榜系统让玩家可以与全球高手竞争,提升成就感与挑战动力。
python 自动生成网站目录树的脚本
说真的,做这玩意最头疼的就是那些教程写得跟天书一样。我就直接上干货,给你一个能跑的版本,抓一个网站内部的URL,按层级排出来,看着跟资源管理器似的。
先装两个库(如果你还没装的话):
pip install requests beautifulsoup4
代码放这,全程没废话,每一行都是干活的:
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin, urlparse
from collections import defaultdict
def get_all_links(base_url, current_url, visited, depth=0, max_depth=2):
"""递归抓取同域名下的所有链接,返回树形结构"""
# 防止无限循环和过深
if depth > max_depth or current_url in visited:
return {}
visited.add(current_url)
tree = {}
try:
# 加个头像是有的网站不搭理你
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'}
resp = requests.get(current_url, headers=headers, timeout=10)
soup = BeautifulSoup(resp.text, 'html.parser')
for a_tag in soup.find_all('a', href=True):
href = a_tag['href']
# 拼接完整的URL
full_url = urljoin(current_url, href)
# 只保留HTTP/HTTPS,并且是同一个域名的
parsed = urlparse(full_url)
if parsed.scheme not in ('http', 'https'):
continue
if parsed.netloc != urlparse(base_url).netloc:
continue
# 去掉锚点、参数这些没用的
clean_url = f"{parsed.scheme}://{parsed.netloc}{parsed.path.rstrip('/') or '/'}"
if clean_url not in visited and clean_url != current_url:
# 递归,深度+1
sub_tree = get_all_links(base_url, clean_url, visited, depth+1, max_depth)
tree[clean_url] = sub_tree
except Exception as e:
# 报错了就跳过,别让一个页面卡死整个流程
pass
return tree
def print_tree(tree, indent=0):
"""把树打印出来,缩进表示层级"""
for url, sub in tree.items():
# 只取路径后面的部分,显得清爽
path = urlparse(url).path
display = path if path != '/' else '/'
print(' ' * indent + '├── ' + display)
if sub:
print_tree(sub, indent + 1)
# 用起来
if __name__ == '__main__':
target = 'https://example.com' # 换成你想爬的网站
visited = set()
site_tree = get_all_links(target, target, visited, max_depth=3) # 深度控制3层,多了容易死
print(f"\n网站目录结构 (深度≤3):\n{'-'*30}")
print_tree(site_tree)
说几个坑,免得你运行的时候骂我:
max_depth 别设太大,3层就够看个大概了,设5层以上有的网站能跑半小时。
User-Agent 必须加,现在大部分网站默认拦截Python请求。
碰到JS渲染的页面(比如Vue、React做的)这代码抓不全,因为requests拿不到动态内容。真要搞那种,得用selenium或者playwright,但那就不是几句话能说清的了。
输出里可能重复出现同一个页面,因为有些链接是相对路径,不同页面可能连到同一个绝对URL,我做了visited集合去重,但还是会有少量因为参数不同导致重复,看个大概没问题。
你就把它当成一个粗略的站点地图生成器,别指望能100%覆盖所有页面。用它快速了解一个简单站点的结构,比手动点快多了。
python爬虫如何爬取不同网站所有子网页?
Python爬虫是一种自动化获取网站信息的程序。当我们需要获取某个网站的所有子网页时,我们可以使用Python爬虫来实现。
本文将介绍如何使用Python爬虫来爬取不同网站的所有子网页。
1,确定目标网站
首先,我们需要确定我们要爬取的目标网站。在本例中,我们将使用“https://www.example.com”作为目标网站。
2,获取主页内容
接下来,我们需要获取目标网站的主页内容。我们可以使用Python的requests库来发送HTTP请求并获取主页内容。
importrequests
url="https://www.example.com"
response=requests.get(url)
content=response.content
3,解析主页内容
获取主页内容后,我们需要从中提取出所有的子网页链接。为此,我们需要使用一个HTML解析器来解析HTML代码并提取出链接。
在Python中,有很多HTML解析器可供选择,如BeautifulSoup、lxml和html5lib等。在本例中,我们将使用BeautifulSoup。
frombs4importBeautifulSoup
soup=BeautifulSoup(content,"html.parser")
links=[]
forlinkinsoup.find_all('a'):
links.append(link.get('href'))
这段代码会将主页中所有的链接存储在一个列表中。
4,获取所有子网页内容
现在,我们需要遍历所有的子网页链接,并获取它们的内容。
forlinkinlinks:
iflink.startswith("http"):
response=requests.get(link)
content=response.content
#解析子网页内容
在这个循环中,我们首先检查链接是否以“http”开头。这是因为有些链接是相对链接,需要拼接上主页的URL才能访问。
如果链接是绝对链接,我们就可以直接发送HTTP请求来获取子网页的内容。
获取子网页内容后,我们可以使用与主页相同的方法来解析子网页内容。
5,存储数据
最后,我们需要将获取到的数据存储起来。我们可以将数据存储在本地文件或数据库中。
importcsv
withopen('data.csv','w',newline='')ascsvfile:
writer=csv.writer(csvfile)
forlinkinlinks:
iflink.startswith("http"):
response=requests.get(link)
content=response.content
#解析子网页内容
#将数据写入CSV文件
writer.writerow(data)
在这段代码中,我们使用Python的CSV库将数据写入CSV文件。
6,完整代码
下面是完整的Python爬虫代码。
importrequests
frombs4importBeautifulSoup
importcsv
url="https://www.example.com"
response=requests.get(url)
content=response.content
soup=BeautifulSoup(content,"html.parser")
links=[]
forlinkinsoup.find_all('a'):
links.append(link.get('href'))
withopen('data.csv','w',newline='')ascsvfile:
writer=csv.writer(csvfile)
forlinkinlinks:
iflink.startswith("http"):
response=requests.get(link)
content=response.content
#解析子网页内容
#将数据写入CSV文件
writer.writerow(data)
这段代码中,我们使用requests库发送HTTP请求,使用BeautifulSoup库解析HTML代码,使用csv库将数据写入CSV文件。
7.总结
通过本文的介绍,我们了解了如何使用Python爬虫来爬取不同网站的所有子网页。需要注意的是,爬虫的使用需要遵循法律法规和道德规范,避免侵犯他人的权益。
优化核心要点
在线直播深夜✅已认证:✔️点击进入🕛🐫可以看黄片的APP下载🍇寒暄tv直播app🛐哀绿直播安卓包下载😼梦挽直播APP免费安装🙊朝桐光在线👇。