从python

时间:2015-11-28 16:28:45

标签: javascript python html selenium beautifulsoup

您好我正在尝试从网站上抓取用户数据。我需要标签名称中可用的用户ID。我正在尝试使用python selenium和 div 标签中的美丽汤来刮取UID。

示例:

<"div id="UID_**60CE07D6DF5C02A987ED7B076F4154F3**-SRC_328619641" class="memberOverlayLink" onmouseover="ta.trackEventOnPage('Reviews','show_reviewer_info_window','user_name_photo'); ta.call('ta.overlays.Factory.memberOverlayWOffset', event, this, 's3 dg rgba_gry update2012', 0, (new Element(this)).getElement('.avatar')&amp;&amp;(new Element(this)).getElement('.avatar').getStyle('border-radius')=='100%'?-10:0);">

我正试图在div标签中使用python selenium和美丽的汤来刮掉UID。我查看了所有文档和几个网页,但我无法找到解决方案。如果有人能告诉我,如果有可能这样的事情,我将非常感激。

2 个答案:

答案 0 :(得分:1)

假设id属性值始终采用UID_格式,后跟一个或多个字母数字字符,后跟-SRC_后跟一个或多个数字:

import re
from bs4 import BeautifulSoup

soup = BeautifulSoup(html)

pattern = re.compile(r"UID_(\w+)\-SRC_\d+")
id = soup.find("div", id=pattern)["id"]

uid = pattern.match(id).group(1)
print(uid)

我们正在使用BeautifulSoup并搜索id attribute value to match a specific regular expression。它包含saving group (\w+),可帮助我们提取UID值。

答案 1 :(得分:0)

您可以使用 .get 方法并轻松抓取标签名称,

您的问题;

soup.get('id')

当然,如果存在许多 id 标签,则需要先使用 find find_all 方法使用更具体的标签,然后再使用 .get