我用过
"<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=
我在可视化工具中对其进行了测试,看来还可以
但是运行代码时输出为空
代码:
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)
答案 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解析器并与其结果进行匹配可能会更好。这样可以避免像您犯的那样的错误,因为解析器会为您处理属性值提取。