为了确定Quora上所有主题的列表,我决定从抓取配置文件页面开始,其中包含许多主题,例如: http://www.quora.com/Charlie-Cheever/topics。我从这个页面中删除了主题,但现在我需要从单击页面底部的“更多”按钮时加载的Ajax页面中删除主题。我试图找到点击“更多”按钮后执行的javascript函数,但还没有运气。以下是html页面中可能相关的三个片段:
<div class=\"pager_next action_button\" id=\"__w2_mEaYKRZ_more\">More</div>
{\"more_button\": \"mEaYKRZ\"}
\"dPs6zd5\": {\"more_button\": \"more_button\"}
new(PagedListMoreButton)(\"mEaYKRZ\",\"more_button\",{},\"live:ld_c5OMje_9424:cls:a.view.paged_list:PagedListMoreButton:/TW7WZFZNft72w\",{})
有没有人知道点击“更多”按钮时执行的javascript函数的名称?任何帮助将不胜感激:)
此时Python脚本(紧跟this教程)如下所示:
#just prints topics followed by Charlie Cheevers from the 1st page
#!/usr/bin/python
import httplib2,time,re
from BeautifulSoup import BeautifulSoup
SCRAPING_CONN = httplib2.Http(".cache")
def fetch(url,method="GET"):
return SCRAPING_CONN.request(url,method)
def extractTopic(s):
d = {}
d['url'] = "http://www.quora.com" + s['href']
d['topicName'] = s.findChildren()[0].string
return d
def fetch_stories():
page = fetch(u"http://www.quora.com/Charlie-Cheever/topics")
soup = BeautifulSoup(page[1])
stories = soup.findAll('a', 'topic_name')
topics = [extractTopic(s) for s in stories]
for t in topics:
print u"%s, %s\n" % (t['topicName'],t['url'])
stories = fetch_stories()
答案 0 :(得分:2)
您可以在事件监听器下的浏览器dom检查器中看到它。这是一个匿名函数,看起来像这样:
function (){return typeof d!=="undefined"&&!d.event.triggered?d.event.handle.apply(l.elem,arguments):b}
这看起来像是一个难以抓取的网站,你可以考虑使用硒。