当前位置: 首页 > 知识库问答 >
问题:

在BeautifulSoup中进行web抓取时,如果一个特定的标记没有类或ID,我该如何引用它呢?

杜英范
2023-03-14

我现在是一个用Python和BeautifulSoup进行网页浏览的新手,我正试图为一个人权项目收集来自《苏丹论坛报》的新闻文章。 正文文本包含在'span'标签中,我的最终目标是过滤掉所有不包含杀戮或侵犯人权新闻的文章。 我的问题是,当每个文本都包含在一个名为'span'的标记中,没有类或id来区分它们时,我该如何引用特定的文本体。

到目前为止,我的代码得到了每一篇文章的链接和正文文本,但我不知道如何调用一个特定的,只能一次调用所有的链接和正文文本。 理想情况下,我希望能够快速引用特定文章的正文文本,并根据我自己的标准告诉Python是否包含它。

URL = 'https://www.sudantribune.com/spip.php?rubrique1'
Source = requests.get(URL)
Soup = BeautifulSoup(Source.content, 'html.parser')
print("You are current crawling the website -> " + URL)
links = []
for link in Soup.find_all('a'):
    links.append(link.get('href'))
print("The links to the articles from " + URL + " are:")
print("https://www.sudantribune.com/" + links[45] + "\n" + "https://www.sudantribune.com/" + links[46] +
"\n" + "https://www.sudantribune.com/" + links[47] + "\n" + "https://www.sudantribune.com/" +
links[48] + "\n" + "https://www.sudantribune.com/" + links[49] + "\n" + "https://www.sudantribune.com/" + links[50]+
"\n" + "https://www.sudantribune.com/" + links[51]+ "\n" + "https://www.sudantribune.com/" + links[52] + "\n" +
"https://www.sudantribune.com/" + links[53] + "\n" + "https://www.sudantribune.com/" + links[54])
 Descriptions = Soup.find_all('span')
 print(Descriptions)

我使用Python仅仅一个星期,因此非常感谢您的任何建议

共有2个答案

帅颖逸
2023-03-14

如果我要做的话,我会做这样的事

for story in Soup.find_all("li"):
   span = story.find("span")  # might even be able to do "story.span"
   if is_this_interesting(span.text):
        store_interesting_article(....)
司徒骞尧
2023-03-14

是否要从位于不同URL的不同网页中检索跨度? 如果是这样,对于每个url,您需要重复从该页面“获取”数据并进行调查的初始过程。

URL = 'https://www.sudantribune.com/spip.php?rubrique1'
Source = requests.get(URL)
Soup = BeautifulSoup(Source.content, 'html.parser')
print("You are current crawling the website -> " + URL)
links = []
for link in Soup.find_all('a'):
    SubPage = requests.get("https://www.sudantribune.com/" + link)
    SubSoup = BeautifulSoup(SubSource.content, 'html.parser')
    Descriptions = Soup.find_all('span')
    print(Descriptions)   
    if SOME_CONDITION_YOU_SPECIFY:         
         links.append(link.get('href')) # Only append if it meets your criteria
 类似资料:
  • 我正试图从网站上获取基本的股票信息:https://www.macrotrends.net/stocks/charts/AAPL/apple/financial-ratios 我的代码如下: 现在我慢慢来,只是尝试返回id名为“row0jqxgrid”下的“div”编号。我非常确定第8行之前的一切都很好,但我不知道如何使用attrs正确地引用id,或者如果可能的话。 有人能提供任何信息吗? 罗斯

  • 我正在构建一个scraper代码,并且已经能够读取表和我想要的信息。问题在于下一个页面链接,我尝试使用类名和svg标记,但代码会随着类名值的更改而中断。 这是该页面的链接 翻页 代码运行点击下一页的元素css的代码如下 似乎当类名的值更改时,它会中断并更改要单击的元素,而我还没有找到一种方法在不更改元素的情况下重复,以便对具有相同结构的多个页面重复。 谢啦

  • 如果我想从锚标记中的href属性和字符串“水平零黎明”中刮出链接。 因为锚标记没有自己的类,并且在整个源代码中有更多的锚标记。 使用beautifulSoup可以做些什么来获取所需的数据?

  • 问题内容: 我试图从HTML中提取许多页面的数据(数字)。每个页面的数据都不同。当我尝试使用soup.select(’span [class =“ pull- right”]’)时,它应该给我编号,但只有标签出现。我相信这是因为网页中使用了Javascript。180,476是我要在许多页面上使用的特定HTML处的数据位置: 我的代码(这在很多页面上都是循环的): 输出: 范例网址:https:/

  • 有谁能帮助我阅读作为Web服务调用响应的XML吗。 我得到的回应是这样的: 当我得到-1作为响应时,我想预先执行动作。我如何阅读它。我在GAE中使用struts,我使用

  • 问题内容: 我正在使用Python从网站上抓取内容。首先,我用和Python的,但我看到,该网站有一个按钮,通过JavaScript创建的内容,所以我决定使用。 假设我可以使用Selenium等方法找到元素并获取其内容,那么当我可以对所有内容都使用Selenium时,有什么理由要使用? 在这种特殊情况下,我需要使用Selenium来单击JavaScript按钮,以便更好地使用Selenium进行解

  • 我有一个活动选项卡的自动播放选项卡类current,这意味着当选项卡是活动的时,列表项有一个名为current的类。 现在我要向第一个子 添加不同的类 null null

  • 我试图刮一个页面与美丽的汤,有