如何在使用BeautifulSoup解析页面时仅获取有效的URL链接?

时间:2019-04-24 15:45:45

标签: python regex parsing url

我正在尝试获取页面链接到的页面列表(使用标签)。解析页面时,我使用BeautifulSoup:

page = opener.open(url)
soup = BeautifulSoup(page.read(), features='lxml')
links = soup.findAll("a", href=True)
for link in links:
    validLink = bool(re.match(r'^(?:https?:\/\/)?(?:[^@\/\n]+@)?(?:www\.)?([^:\/\n]+)', link["href"]))
    if validLink:
         myset.append(link["href"])

通过这种方式,它会寻找<a href>标签来找到链接并返回链接页面的 url 。但是 myset 中生成的网址看起来像这样:

enter image description here

如何过滤其中具有哈希符号的链接?另外,如果我想过滤广告链接视频,...我应该使用标记的哪个元素?

1 个答案:

答案 0 :(得分:1)

对于以http或https开头的链接(您只需要声明http),可以将属性选择器与以operator开头的

def change_extent():
    l.config(text="sketch in progress...")

    canvas.create_arc(350, 100, 220, 220, extent=0, outline="yellow", tags=("arc",))
    extent = float(canvas.itemcget("arc", "extent"))
    extent = extent + 5.0
    canvas.itemconfigure("arc", extent=extent)
    canvas.after(100, change_extent)



root = tk.Tk()
root.geometry("600x400")

canvas = tk.Canvas(root, width=200, height=200)
canvas.pack(fill="both", expand=True)


l = tk.Label(canvas, bg="dodger blue",  fg="white")
l.place(x=250, y=20)


b= tk.Button(canvas, text="Start sketch", command=change_extent, width=25, fg='dodger blue')
b.place(x=220, y=330)


root.mainloop() 

对于广告链接/视频-您要添加还是排除?我们将需要查看相关的html。是否有要使用的网址?