2023年4月19日 星期三

爬蟲

def get_links(url):
    import requests
    from bs4 import BeautifulSoup as soup
    result=requests.get(url)
    page=result.text
    doc=soup(page)
    links=[element.get("href") for element in doc.find_all("a")]
    return links
if __name__ == "__main__":
    import sys
    for url in sys.argv[1:]:
        print(f"Links in {url}")
        for num, link in enumerate(get_links(url),start=1):
            print(num,link)
        print()


"""
定義了一個名為get_links的函數,它接受一個URL作為輸入,並返回該頁面上的所有鏈接的列表。

它使用requests模塊獲取頁面的HTML和BeautifulSoup庫解析HTML並提取鏈接。

腳本還包括一個代碼塊,用於檢查腳本是否直接運行,

如果是,則讀取sys.argv中的命令行參數並打印每個URL中的鏈接。
"""
"""
def get_links(url): 声明了一个名为 get_links 的函数,该函数接受一个 url 参数,

用于获取指定网页的所有链接。

import requests 导入了 requests 模块,用于发送 HTTP 请求和获取网页数据。

from bs4 import BeautifulSoup as soup 导入了 BeautifulSoup 类并将其重命名为 soup,

以便在后面的代码中更方便地使用。

result=requests.get(url) 使用 requests 模块发送一个 GET 请求,

并将响应对象保存在 result 变量中。

page=result.text 将响应对象的文本内容保存在 page 变量中。

doc=soup(page) 使用 BeautifulSoup 类解析 HTML 文档,并将解析结果保存在 doc 变量中。

links=[element.get("href") for element in doc.find_all("a")] 使用列表推导式

和 doc.find_all("a") 方法获取 HTML 文档中所有的链接,并将这些链接保存在名为 links 的列表中。

return links 返回 links 列表作为函数的结果。
"""
"""
if __name__ == "__main__": 检查 Python 解释器是否正在直接运行当前模块,

而不是被其他模块导入并调用。如果是,则执行以下代码块。

import sys 导入了 sys 模块,用于读取命令行参数。

for url in sys.argv[1:]: 循环遍历从命令行传入的参数列表,

其中第一个参数(sys.argv[0])是脚本的名称,因此从第二个参数(sys.argv[1])开始循环。

print(f"Links in {url}") 打印一个包含当前正在处理的 URL 的消息。

for num, link in enumerate(get_links(url),start=1): 使用 enumerate 函数遍历

get_links(url) 函数返回的链接列表,并为每个链接分配一个编号。

使用 start=1 参数设置编号从 1 开始。

print(num,link) 打印当前链接的编号和 URL。

print() 打印一个空行,以使输出更易读。
"""

標籤:

0 個意見:

張貼留言

訂閱 張貼留言 [Atom]

<< 首頁