【发布时间】:2019-03-28 12:33:26
【问题描述】:
学习 Python 并尝试通过使用正则表达式从 HTML 页面获取用户 ID。 (LTT 是网站,仅供练习)。
我希望能够在 cmd 中输入 'findID username' 并返回 6 位 ID 号。
花了几个小时尝试不同的代码并查找参考资料,也许有人可以为我简单地解释一下。我可以配置 searchRegex 对象以正确识别页面中的 6 位数字,但它没有找到我正在寻找的正确的 6 位组合。 (抓取另一个随机的 6 位数字,而不是 6 个特定的用户 ID 数字)
import re, requests, sys, time
if len(sys.argv)>1:
search=requests.get('https://linustechtips.com/main/search/?&q='+str(sys.argv[1:])+'&type=core_members')
searchRegex=re.compile(r"^'$\d\d\d\d\d\d^'$")
ID=searchRegex.search(search.text)
print(ID)
time.sleep(10)
else:
print('Enter a search term...')
我尝试了许多不同的方法来让代码识别 ' 符号。但是当我这样尝试时,返回None。为什么正则表达式可以找到6位数字,但找不到以'开头和结尾的6位数字。
这是我正在测试的 HTML 页面。
view-source:https://linustechtips.com/main/search/?&q=missiontomine&type=core_members
【问题讨论】:
-
试试不带锚点的
'\d{6}',这将匹配data-followID='600895'中的id -
如果您知道要查找的确切元素,那么您最好将页面内容推送到 BeautifulSoup 中并以这种方式提取值。
-
@Thefourthbird 这将返回它找到的前 6 位数字,这不是用户 ID
-
您能否指定 UserID 在源中的确切位置以及字符串的样子?为什么不按照建议使用 BeautifulSoup?
标签: python regex python-3.x