我有一个网址列表,我尝试使用正则表达式从每个网址中删除信息。这是我的代码(好吧,至少是相关部分):
for url in sammy_urls:
soup = BeautifulSoup(urlopen(url).read()).find("div",{"id":"page"})
addy = soup.find("p","addy").em.encode_contents()
extracted_entities = re.match(r'"\$(\d+)\. ([^,]+), ([\d-]+)', addy).groups()
price = extracted_entities[0]
location = extracted_entities[1]
phone = extracted_entities[2]
if soup.find("p","addy").em.a:
website = soup.find("p", "addy").em.a.encode_contents()
else:
website = ""
当我提取几个网址并练习正则表达式时,提取的实体和价格位置手机网站都很好,但是当我把它放到这个更大的循环中时会遇到麻烦,正在提供真实的URL。
我输错了正则表达式吗? (错误消息是''无类型'对象没有属性'群组''这是我猜的。)
我的加入'似乎是我想要的......(打印
"$10. 2109 W. Chicago Ave., 773-772-0406, "'<a href="http://www.theoldoaktap.com/">theoldoaktap.com</a>
"$9. 3619 North Ave., 773-772-8435, "'<a href="http://www.cemitaspuebla.com/">cemitaspuebla.com</a>
等等。)
答案 0 :(得分:0)
将html / xml与正则表达式结合起来会变坏。
为什么不使用bs4在你感兴趣的div中找到'a'元素,并从元素中获取'href'属性。
另见retrieve links from web page using python and BeautifulSoup