【问题标题】:How to search for symbols using regex如何使用正则表达式搜索符号
【发布时间】: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


【解决方案1】:

尝试正则表达式:(?<=profile\/)\d{6}

Demo

html 文本将用户 ID 作为 url 的一部分,例如:

https://linustechtips.com/main/profile/600895-missiontomine/?do=hovercard

(?<=profile\/) 积极地向后看

【讨论】:

    猜你喜欢
    • 2015-01-23
    • 1970-01-01
    • 2020-03-08
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2019-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多