2013-07-30 79 views
0

我的想法是探索Groupon的网站来提取交易的网址。问题是,我试图做Groupon的页面上的findall找到DATAS是这样的:(此页:http://www.groupon.de/alle-deals/muenchen/restaurant-296Python正则表达式从网页抓取数据

"category":"RESTAURANT1","dealPermaLink":"/deals/muenchen-special/Casa-Lavecchia/24788330", and I'd like to get the 'deals/muenchen-special/Casa-Lavecchia/24788330'. 

我想了整整一夜,但我无法找到一个正确的正则表达式。我试过了:

import urllib2 
import re 
Page_Web = urllib2.urlopen('http://www.groupon.de/alle-deals/muenchen/restaurant-296').read() 
for m in re.findall('category*RESATAURANT1*dealPermaLink*:?/*/*/*/*\d$',Page_Web): 
    print m 

但它不打印任何东西。

+0

如果你有时间看看它们,BeautifulSoup和Requests库可以在Python中进行刮取很容易。 –

+2

为什么不只是注册[groupon api](http://www.groupon.com/pages/api)并以安全,方便和合法*的方式使用它来实现您的目标? – J0HN

回答

-1

如何将RESATAURANT1更改为RESTAURANT1,对于初学者?

+0

你至少试过了吗?正则表达式中还有很多其他错误。 Downvote。 – J0HN

+0

当然,正确的正则表达式是 'category':“RESTAURANT1”,“dealPermaLink”:“/ [\ w - ] */[\ w - ] */[\ w - ] */\ d *' –

1

为了推断块,你的兴趣,我会做这样的:

from bs4 import BeautifulSoup 
import urllib2 
html = urllib2.urlopen('http://www.groupon.de/alle-deals/muenchen/restaurant-296').read() 
soup = BeautifulSoup(html) 
scriptResults = soup('script',{'type' : 'text/javascript'}) 
js_block = scriptResults[12] 

以此为出发点,如果你愿意,你可以用正则表达式解析或尝试interprete的JS(也有一些线程关于这个的stackoverflow)。

反正,像有人说,你应该使用Groupon的API ...

附: 你正在解析的块可以很容易地解析为字典,如果你看起来已经是字典的列表...

+0

我成功了,这里感谢我所做的。我的问题是,我没有很好地理解正则表达式: import urllib2 import re html = urllib2.urlopen('http://www.groupon.de/alle-deals/muenchen/restaurant-296') .read() txt = html liste = re.findall('category':“RESTAURANT1”,“dealPermaLink”:“/ [\ w - ] */[\ w - ] */[\ w-] */\ d *',txt) print liste –