使用 Python 从 HTML 中提取字符串不适用于正则表达式或 BeautifulSoup

Extracting strings from HTML with Python wont work with regex or BeautifulSoup

我正在使用 Python 2.7、BeautifulSoup4、正则表达式和 windows 7 上的请求。

我从一个网站上抓取了一些代码,但在解析和提取我想要的位并将它们存储在字典中时遇到问题。我所追求的是在代码中显示如下的文本:

@CAD_DTA\">I WANT THIS@G@H@CAD_LBL

我要提取和存储大约 50-60 个短字符串,它们在代码中都是以 @CAD_DTA\"> 开头,然后是 @G@H@CAD_LBL。这些字符串都是可变长度的

我试过:

re.search('@CAD_DTA\">(.+?)@G@H@CAD_LBL',result.text)

其中 results.post(url, data = cookie, headers = {'referer': my_referer})

的输出

我也试过通过str(result.text)

re.search 不断返回 None。这很奇怪,因为如果我从字面上复制 result.text 的内容并将其粘贴到一个字符串中并通过 re.search 传递它,它就可以正常工作。

我试过使用 re.search('@CAD_DTA">(.+?)@G@H@CAD_LBL',result.text) 以防 \ 被视为逃避之类的。我不知道。

有人能给我指出正确的方向吗?

为了将字符串与文字反斜杠相匹配,您需要在原始字符串中对其进行两次转义,例如:

re.search(r'@CAD_DTA\">(.+?)@G@H@CAD_LBL',result.text)
          ^          ^

为了获取找到的匹配项的索引,您可以使用 start([group]) of re.MatchObject

IDEONE demo:

import re
obj = re.search(r'@CAD_DTA\">(.+?)@G@H@CAD_LBL', 'Some text here...@CAD_DTA\">I WANT THIS@G@H@CAD_LBL')
print obj.start(1)
print obj.group(1)