+不支持的操作数类型:'_regex.Pattern'和'str'

时间:2019-06-20 20:00:02

标签: python-3.x web-scraping beautifulsoup

当尝试使用正则表达式匹配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'

3 个答案:

答案 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-不清楚,因为未提供完整的代码段)来执行隐式操作,这是不允许的。请提供完整的代码段及其用途,以便我可以对其提供更好的见解。谢谢