【发布时间】:2019-07-04 15:50:42
【问题描述】:
我正在尝试抓取 https://in.udacity.com/courses/all。我需要在输入搜索查询时显示课程。例如:如果我输入 python,有 17 门课程作为结果。我只需要获取这些课程。这里搜索查询没有作为 url 的一部分传递。(不是 get 方法)。所以 html 内容也没有改变。那么如何在不浏览整个课程列表的情况下获取这些结果。 在这段代码中,我正在获取所有课程链接以获取其内容并在该内容中搜索搜索词。但它并没有给我预期的结果。
import requests
from bs4 import BeautifulSoup
from bs4 import BeautifulSoup
from bs4.element import Comment
import urllib.request
from urllib.request import Request, urlopen
def tag_visible(element):
if element.parent.name in ['style', 'script', 'head', 'title', 'meta', '[document]']:
return False
if isinstance(element, Comment):
return False
return True
def text_from_html(body):
soup = BeautifulSoup(body, 'html.parser')
texts = soup.findAll(text=True)
visible_texts = filter(tag_visible, texts)
return u" ".join(t.strip() for t in visible_texts)
page = requests.get("https://in.udacity.com/courses/all")
soup = BeautifulSoup(page.content, 'lxml')
courses = soup.select('a.capitalize')
search_term = input("enter the course:")
for link in courses:
#print("https://in.udacity.com" + link['href'])
html = urllib.request.urlopen("https://in.udacity.com" + link['href']).read()
if search_term in text_from_html(html).lower():
print('\n'+link.text)
print("https://in.udacity.com" + link['href'])
【问题讨论】:
-
欢迎来到 StackOverflow。请花时间阅读这篇关于如何提供minimal, complete, and verifiable example 的帖子并相应地修改您的问题。 how to ask a good question 上的这些提示也可能有用。
-
@Merin 你为什么取消我的回答?
标签: python web-scraping beautifulsoup