【问题标题】:Following certain links with beautiful soup按照某些链接与美丽的汤
【发布时间】:2015-12-03 03:18:12
【问题描述】:

我在这个问题上遇到了很多麻烦,我想我理解这项工作,但现在我的头因为撞在桌子上而凹了一个​​凹痕。

我需要做的是制作一个程序,用漂亮的汤来浏览网页,但它会获得某个链接(从页面下方的第 3 或第 20 个链接的任何位置)然后转到第 3 个(或第 20 个,或任何数字)链接并尝试从该页面一遍又一遍地找到第三个链接,次数不详(出于解释目的,我将其保持在 20 以下。我需要在经过多次搜索后找到最后一个(第三个)链接。

我有我的程序,但我无法通过第二次迭代!我确实找到了几个小时的方法并得到了答案,但这是一个无限循环,这对我学习没有帮助。

让我们说这是我必须做的:

在第 7 位找到链接(第一页上的第 7 个链接)。按照那个链接。重复此过程 5 次。答案是您检索到的链接中的姓氏。

我有办法检索名称,只是无法找出循环!

我也有点过分热心地试图找到另一个关于这个的帖子一个小时。有很多类似的,但不是我发现的这个确切的问题。谢谢你的时间。这是我目前所拥有的。

from urllib.request import urlopen
from bs4 import BeautifulSoup

#first page url
url = 'insertwebsitehere.com' 
html = urlopen(url).read()
soup = BeautifulSoup(html)

# Retrieve all of the anchor tags
tags = soup('a')

taglist= []
count = 0

for tag in tags:
    name = tag.contents[0]
    newtag = tag.get('href',None)
    #print (newtag)
    # add count? count += 1 , then do something when it reaches a certain count?
    #taglist.append(newtag), this method didnt really work.

我是一个新的编码员,所以我试图在没有先进技术的情况下做到这一点,我不一定需要答案,只需要帮助。

【问题讨论】:

  • 一天后,我发现我必须进行第二次 for 循环,并且基本上将所有代码放入两次,并且比需要的循环次数少一次。仍然不太明白为什么我必须调用 url 打开并再次阅读,我认为只是覆盖 url 会自己做到这一点? Anway,仍然会欣赏更干净的代码。我的最后是 28 行。 (可以少一些,但看起来很丑)

标签: python-3.x web-scraping beautifulsoup web-crawler


【解决方案1】:

我正在通过 Coursera 参加 Python for Informatics 的这个作业。

对于我使用的重复一定次数的循环:

for _ in range(c)

c 等于count = input(),因此用户可以选择希望循环重复多少次,在我们的例子中是 4 次。

【讨论】:

  • 感谢您的回复!
  • 欢迎您! Finnaly 用 18 行代码完成了我的任务。但我知道它可以更少。我们不需要创建列表,因为标签作为列表工作。现在我想弄清楚我是如何做到的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-01
  • 1970-01-01
  • 2020-03-05
  • 1970-01-01
  • 1970-01-01
  • 2021-01-15
相关资源
最近更新 更多