我试图从另一个网站上删除一些内容,我不确定为什么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包含大量标记 . 我不确定我做错了什么,或者这只是脚本无法处理的格式错误的标记 . 谢谢!
1 回答
问题是从该URL提供的HTML有一个空的div.sitesDiv:
页面上有一个脚本,在页面加载后填充div . 您的Python代码不会执行Javascript,因此div永远不会被修改,所以当您的代码解析它时它仍然是空的 .
好消息是,您要查找的数据将通过此URL作为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即可获得所需的信息 .