我正试图从另一个网站上删除一些内容,我不确定为什么BeautifulSoup会产生这个输出。它只是在匹配中找到一个空格,但真正的HTML包含大量的标记。如果这对我来说是愚蠢的,我道歉。我是python的新手。
这是我的代码:
import sys
import os
import mechanize
import re
from BeautifulSoup import BeautifulSoup
def scrape_trails(BASE_URL, data):
#Get the trail names
soup = BeautifulSoup(data)
sitesDiv = soup.findAll("div", attrs={"id" : "sitesDiv"})
print sitesDiv
def main():
BASE_URL = "http://www.dnr.state.mn.us/skiing/skipass/list.html"
br = mechanize.Browser()
data = br.open(BASE_URL).get_data()
links = scrape_trails(BASE_URL, data)
if __name__ == '__main__':
main()
如果您遵循该URL,您可以看到sitesDiv包含大量标记。我不确定我做错了什么,或者这只是脚本无法处理的格式错误的标记。谢谢!
答案 0 :(得分:2)
问题是从该URL提供的HTML有一个空的div.sitesDiv:
<div id="sitesDiv"> </div>
页面上有一个脚本,在页面加载后填充div。你的Python代码不会执行Javascript,所以div永远不会被修改,所以当你的代码解析它时它仍然是空的。
好消息是,您要查找的数据将通过此网址作为JSON提供给HTML:http://maps.dnr.state.mn.us/cgi-bin/mapserv54?map=/usr/local/mapserver/apps/prk/ski_pass/sites.map&mode=nquery&qformat=geojson。因此,您可以完全跳过BeautifulSoup,只需直接读取和解析JSON即可获得所需的信息。