在Python中使用reg exp

时间:2018-09-02 09:23:04

标签: python

我用过

"<a href='/property-(.+?)-wa[a-zA-Z0-9-\s\" ]{5,50}><img src="

获取webpage that I want to analyze中的属性类型

我可以通过使用正则表达式分析如下代码来获得这些消息:

<a href="/property-house-wa-joondalup-405127028" ><img src=

"<a href='/property- +房子(我想要的)+ -wa + 5-50个字符,数字,“,空格+ ><img src=

我在可视化工具中对其进行了测试,看来还可以

enter image description here

但是运行代码时输出为空

代码:

from urllib.request import urlopen
import re

url='https://www.realestate.com.au/rent/in-perth+-+greater+region,+wa/list-1'
page = urlopen(url).read().decode('utf-8')
##print(page)
propertyReg=re.compile(r"<a href='/property-(.+?)-wa[a-zA-Z0-9-\s\" ]{5,50}><img src=")
propertytext=re.findall(propertyReg,page)
print(propertytext)

2 个答案:

答案 0 :(得分:1)

避免使用正则表达式解析html数据。使用专门为此打造的东西,例如美丽的汤

>>> import requests
>>> from bs4 import BeautifulSoup
>>> 
>>> url='https://www.realestate.com.au/rent/in-perth+-+greater+region,+wa/list-1'
>>> r = requests.get(url)
>>> soup = BeautifulSoup(r.text, 'html.parser')
>>> for a in soup.find_all('a', {'href': re.compile(r'^/property')}):
>>>     property = a['href'].split('-', 2)[1]
>>>     print (property)

答案 1 :(得分:1)

您的正则表达式中有一个错误:

代替

"<a href='/property-(.+?)-wa[a-zA-Z0-9-\s\" ]{5,50}><img src="

,应该是:

"<a href=['\"]/property-(.+?)-wa[a-zA-Z0-9-\s\" ]{5,50}><img src="

(机器人'"href=之后匹配)

如果在复杂的场景中需要使用正则表达式,可能会有些令人生畏。使用html解析器并与其结果进行匹配可能会更好。这样可以避免像您犯的那样的错误,因为解析器会为您处理属性值提取。