首页 > 解决方案 > 根据已知域查找完整的 URL

问题描述

使用 BeautifulSoup 根据谷歌搜索已知域(如 .microsoft.com)拉取网页。我想提取包括“http(s)://”前缀的整个 URL。

我正在检索有效节点,但我不明白如何指示 find_all 方法包含目标文本左侧的所有文本,包括“http”的第一次出现。

import requests
from bs4 import BeautifulSoup
import urllib3
import re

def make_soup(url):
    http = urllib3.PoolManager()
    r = http.request("GET", url)
    return BeautifulSoup(r.data,'lxml')

# to search 
query = "\"\.microsoft\.com\""
try:
    from googlesearch import search
    for j in search(query, tld="com", num=10, stop=1, pause=2): 
        #print(j)
        page = make_soup(j)

        for node in page.find_all(text=lambda x: x and ".microsoft.com" in x):
            print(node)
except ImportError:
    print("No module named 'google' found")

我收到了以“.microsoft.com”结尾的不错结果,但我希望结果包含完整的 URL,以“http...microsoft.com”开头

标签: pythonbeautifulsoupfindall

解决方案


推荐阅读