我在 Windows 7 上使用 Python 2.7、BeautifulSoup4、正则表达式和 requests。
我从网站上抓取了一些代码,但在解析和提取我想要的位并将它们存储在字典中时遇到问题。我所追求的是代码中显示的文本:
@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)
其中result
是s.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)
^ ^
为了获取找到的匹配项的索引,您可以使用 re.MatchObject 的 start([group])
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)
关于python - 使用 Python 从 HTML 中提取字符串不适用于正则表达式或 BeautifulSoup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30985493/