【问题标题】:Scraping data from the tag names in python从python中的标签名称中抓取数据
【发布时间】:2016-03-02 14:45:16
【问题描述】:

您好,我正在尝试从网站上抓取用户数据。我需要标签名称本身提供的用户 ID。我正在尝试在 div 标签中使用 python selenium 和美丽的汤来抓取 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);">

我正在尝试使用 python selenium 和 div 标签中的美丽汤来抓取 UID。我浏览了所有文档和几个网页,但找不到解决方案。如果有人能告诉我这样的事情是否可能,我将非常感激。

【问题讨论】:

  • “我查看了所有文档和几个网页,但找不到解决方案。” - 这不太可能。如果陈述的前半部分是真的,那么后半部分就不可能是真的。或者反过来。无论如何,如果你真的尝试过,你应该有一些代码可以展示。
  • @Tomalak- 这两个陈述都是正确的我是网络抓取的新手,所以我想我不知道我应该查看的正确位置。我能想出的小代码是- from bs4 import BeautifulSoup import requests r = requests.get("tripadvisor.ca/…) soup = BeautifulSoup(r.content) for link in soup.find_all(attrs={"class": "memberOverlayLink"}): link.get("id") print(link);
  • 但它给了我比我需要的更多的数据
  • 请不要将代码发布到 cmets 中。直接编辑您的问题。我的评论旨在鼓励您发布到目前为止的代码,以便人们可以看到您尝试过的内容,从而更容易向您展示正确的方向。

标签: javascript python html selenium beautifulsoup


【解决方案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值。

【讨论】:

  • 非常感谢您抽出时间来帮助我。并睁开眼睛使用正则表达式
【解决方案2】:

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

在你的问题中;

soup.get('id')

当然,如果存在很多id标签,你需要在使用findfind_all方法之前使用更具体的标签.get

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    • 2020-05-19
    • 2021-10-13
    • 1970-01-01
    相关资源
    最近更新 更多