我正在编写一个贯穿本网站的程序:http://www.whatuni.com,具体为:http://www.whatuni.com/degree-courses/search?subject=software-engineering&pageno=
第1至6页。
它搜索每一页并查找Russell Group的每所大学,并进行软件工程,然后浏览所有模块。它旨在拒绝任何带有硬件组件的模块,并将其余模块添加到列表中。到目前为止,它正在搜索模块页面但存在一个问题:默认情况下不显示网站模块中的主题,按下按钮后由JavaScript加载。这是一个显示情况的页面:
http://www.whatuni.com/degrees/artificial-intelligence-and-software-engineering-beng-hons/university-of-edinburgh/cd/54977454/5508/
我想知道如何访问这些模块,以便我可以遍历它们,这是该程序中最后一个复杂的步骤。我是否必须模拟用户输入或者因为它不通过浏览器解析而无法工作?或者我必须查看脚本?我正在使用python 3.4,以及这个程序的美味汤。
from general import *
class ModuleCrawler:
base_url = ""
page_url = ""
bad_words = ("computer systems" or "computer architecture" or "hardware" or "electronics"
or "information technology")
def __init__(self, base_url, page_url):
self.base_url = base_url
self.page_url = page_url
self.crawl_topics(self.get_description(get_html(page_url)))
def crawl_topics(self, description):
if self.bad_words in description.lower():
print("crap uni")
else:
#print(description.lower())
append_to_file("PossibleUnis.txt", self.page_url)
def get_description(self, html_string):
return ', '.join(str(s) for s in (get_by_id(html_string, "#fullDesc")))
那是模块爬虫,漂亮的汤代码在另一个文件中。我让它从页面中获取描述,但有时会遗漏这些单词,而我的文本文件中有许多具有这些主题的模块。