当尝试使用正则表达式匹配URL时,我得到以下URL。我该如何解决此错误。我试图使用正则表达式从href中提取文本,并将其附加到原始URL。类似于重定向。我无法发布该URL,因为它未经授权。
示例URL为abc.com
我将解析上述URL,以从下拉菜单中提取href文本,假设该文本为<li><a href="ABC.asp?DER=PI">Myshop</a></li>
我从a href内部提取数据并将URL设置为abc.com/ABC.asp?DER=PI
当尝试使用正则表达式匹配URL并使用URL字符串连接时,得到以下URL。我该如何解决这个错误
a=(re.compile('href=(.+Home\.asp\?Pipe=.+)\"'))
我收到以下错误。
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-189-01866482c481> in <module>
10 for item in data1:
11 a=(re.compile('href=(.+Home\.asp\?Pipe=.+)\"'))
---> 12 print(a + url)
13 #print(data2)
14 #for item in data
TypeError: unsupported operand type(s) for +: '_regex.Pattern' and 'str'
答案 0 :(得分:1)
re.compile
将正则表达式模式编译为正则表达式对象,仅可使用其match()和search()方法将其用于匹配。
您不能使用字符串添加正则表达式对象。
有关更多信息,请阅读https://jsfiddle.net/u36ta8bz/。
我希望对您有帮助
答案 1 :(得分:0)
如果您只想提取href
:
import re
txt = '<li><a href="ABC.asp?DER=PI">Myshop</a></li>'
url = 'abc.com'
find_href = re.compile(r'href="(.+)"')
href = find_href.search(txt)
if href:
print(f"{url}/{href.group(1)}")
输出:
abc.com/ABC.asp?DER=PI
答案 2 :(得分:0)
@akshay re.compile(pattern)=>返回re对象,并且您尝试使用字符串(即url-不清楚,因为未提供完整的代码段)来执行隐式操作,这是不允许的。请提供完整的代码段及其用途,以便我可以对其提供更好的见解。谢谢