Python 从正则表达式获取值

Python 从正则表达式获取值,python,regex,Python,Regex,我正在构建一个网络爬虫程序,其设置如下: url = "The URL I'm Scraping" urls = [url] #stack of urls to scrape visited = [url] #record of scraped urls #while stack of urls is greater than 0, keep scraping for links while len(urls) > 0: try: htmltext = urlli

我正在构建一个网络爬虫程序,其设置如下:

url = "The URL I'm Scraping"
urls = [url] #stack of urls to scrape
visited = [url] #record of scraped urls

#while stack of urls is greater than 0, keep scraping for links
while len(urls) > 0:
    try:
        htmltext = urllib.urlopen(urls[0]).read()
#except for visited urls
    except:
        print urls[0]    
    soup = BeautifulSoup(htmltext)
    urls.pop(0)
#print number of urls in stack
    print len(urls)

    x = "address"
    y = re.findall(x,htmltext)

    Print y
它会打印出所有出现的单词address,但不会像它应该得到的那样得到address的值。我还尝试了几种不同的方法:

y = re.findall(r'address="([^"]*)"',htmltext)

但是这个返回为空。我不知道为什么我不能让它工作,因为这似乎是一个非常明显的问题。任何帮助都将不胜感激。

我认为您的代码可以正常工作。让你失望的是正则表达式。在代码的正则表达式部分尝试以下操作:

regex = "address(| )=(| )([a-zA-Z0-9\-\.]+)(\s+|$)"
for curMatch in re.finditer(regex, htmltext):
    print curMatch.group(3)

这将只打印url部分。它并不完美,但您可以通过快速搜索找到更好的正则表达式来匹配URL

正则表达式代码不应该是你循环的一部分吗?你是对的。它在我的代码中,我只是复制了一个错误。刚刚编辑了这个问题。你确定htmltext不是空的吗?我没有完全复制你的设置,但当我从文件中取出文本时,它会打印每次出现的地址。我想你的html文本可能是空的?当我运行Print Htmltext时,它会打印出源代码,所以我不认为Htmltext是空的,但我可能错了。