如何使用python获取HTML元素中的所有链接?

2024-09-23 22:25:14 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,请检查下面的图片,以便我能更好地解释我的问题:

enter image description here

我试图采取一个用户输入选择下面的链接之一“课程搜索按术语”。。。。(即2015年冬季)。你知道吗

打开的HTML显示此网页的部分代码。我想抓取元素中的所有href链接,其中包括我想要的五个术语链接。我遵循这个网站的指示(www.greda.com/2013/03/03/web-scraping-101-with-python/),但这并不能解释这一部分。下面是一些我一直在尝试的代码。你知道吗

from bs4 import BeautifulSoup
from urllib2 import urlopen

BASE_URL = "http://classes.uoregon.edu/"

def get_category_links(section_url):

    html = urlopen(section_url).read()
    soup = BeautifulSoup(html, "lxml")
    pldefault = soup.find("td", "pldefault")
    ul_links = pldefault.find("ul")
    category_links = [BASE_URL + ul.a["href"] for i in ul_links.findAll("ul")]

    return category_links

感谢您的帮助!谢谢。或者如果你想看看这个网站,它的classes.uoregon.edu/你知道吗


Tags: 代码fromimporturlbase网站链接links
1条回答
网友
1楼 · 发布于 2024-09-23 22:25:14

我会保持它的简单,并找到所有包含2015的链接在文本中和termhref

for link in soup.find_all("a",
                          href=lambda href: href and "term" in href,
                          text=lambda text: text and "2015" in text):
    print link["href"]

印刷品:

/pls/prod/hwskdhnt.p_search?term=201402
/pls/prod/hwskdhnt.p_search?term=201403
/pls/prod/hwskdhnt.p_search?term=201404
/pls/prod/hwskdhnt.p_search?term=201406
/pls/prod/hwskdhnt.p_search?term=201407

如果需要完整的url,请使用^{}将链接与基本url连接起来:

from urlparse import urljoin

...
for link in soup.find_all("a",
                          href=lambda href: href and "term" in href,
                          text=lambda text: text and "2015" in text):
    print urljoin(url, link["href"])

这将打印:

http://classes.uoregon.edu/pls/prod/hwskdhnt.p_search?term=201402
http://classes.uoregon.edu/pls/prod/hwskdhnt.p_search?term=201403
http://classes.uoregon.edu/pls/prod/hwskdhnt.p_search?term=201404
http://classes.uoregon.edu/pls/prod/hwskdhnt.p_search?term=201406
http://classes.uoregon.edu/pls/prod/hwskdhnt.p_search?term=201407

相关问题 更多 >