使用 BeautifulSoup 解析 Javascript 个按钮元素中的 HTML
Parsing HTML within Javascript button elements with BeautifulSoup
我一直在使用 Requests 和 BeautifulSoup 解析 Craigslist。我可以访问 post 和所有内容,但是当我试图访问 post 的 'reply' 电子邮件地址时,我似乎无法 return 任何东西——假设是因为你必须先'click'回复按钮。
我想做的是了解如何获取此电子邮件地址。使用
reply = soup.findAll('div',{'class':'anonemail'})
或
reply = soup('button',{'class':'reply_button js-only'})
或包含电子邮件地址的元素的任何变体 return 没有。
我可以手动访问回复 url,例如:
http://losangeles.craigslist.org/reply/lax/sof/4869445564
但我似乎无法弄清楚这个 url 是如何动态生成的。也就是说,我可以在 url 的末尾手动提供 /reply/lax/solf/(dataid),但我想知道如何从页面本身提取此 url,除非,再次,有一种访问回复电子邮件地址的更简单方法。
url = 'http://losangeles.craigslist.org/wst/sof/4869468306.html';
soup = BeautifulSoup(urllib2.urlopen(url).read());
reply = soup.findAll('a', attrs = {"id": "replylink"});
if reply:
url = 'http://losangeles.craigslist.org' + reply[0].get('href');
soup = BeautifulSoup(urllib2.urlopen(url).read());
reply = soup.findAll(['div', 'a'], attrs = {"class": re.compile(r'anonemail|mailapp')});
if reply:
reply[0].getText()
returns:
u'qx8ft-4869445564@job.craigslist.org'
我一直在使用 Requests 和 BeautifulSoup 解析 Craigslist。我可以访问 post 和所有内容,但是当我试图访问 post 的 'reply' 电子邮件地址时,我似乎无法 return 任何东西——假设是因为你必须先'click'回复按钮。
我想做的是了解如何获取此电子邮件地址。使用
reply = soup.findAll('div',{'class':'anonemail'})
或
reply = soup('button',{'class':'reply_button js-only'})
或包含电子邮件地址的元素的任何变体 return 没有。
我可以手动访问回复 url,例如:
http://losangeles.craigslist.org/reply/lax/sof/4869445564
但我似乎无法弄清楚这个 url 是如何动态生成的。也就是说,我可以在 url 的末尾手动提供 /reply/lax/solf/(dataid),但我想知道如何从页面本身提取此 url,除非,再次,有一种访问回复电子邮件地址的更简单方法。
url = 'http://losangeles.craigslist.org/wst/sof/4869468306.html';
soup = BeautifulSoup(urllib2.urlopen(url).read());
reply = soup.findAll('a', attrs = {"id": "replylink"});
if reply:
url = 'http://losangeles.craigslist.org' + reply[0].get('href');
soup = BeautifulSoup(urllib2.urlopen(url).read());
reply = soup.findAll(['div', 'a'], attrs = {"class": re.compile(r'anonemail|mailapp')});
if reply:
reply[0].getText()
returns:
u'qx8ft-4869445564@job.craigslist.org'