如何获取urllib和BeautifulSoup以迭代方式跟踪保存为变量名称的链接Python 3

时间:2018-07-29 13:32:40

标签: python-3.x

我正在尝试编写一些内容,以转到链接,然后在该页面上找到所有锚点链接,返回第三个锚点链接,然后导航至该第三个链接。我希望它这样做四次。

我可以得到代码来告诉我第一页上的第三个链接,但是我无法获取它来导航到该链接并重复该过程。我知道链接已正确存储在新变量中。

我认为差异是由于new_url的格式。可能是因为它是一个字符串,或者新链接的周围没有引号。我试图将其周围的引号连接起来,但是http类型却出现错误。我也尝试使用urllib quote和quote_plus模块,但这也会返回错误。我也尝试了encode(),但是那也不起作用。

有人可以帮助我理解为什么此代码无法导航到我标识的链接吗?

import urllib.request, urllib.parse, urllib.error

from bs4 import BeautifulSoup

count_a = 0
count_b = 0
names = list()

while count_a < 4:

    if count_a == 0:

        url = 'http://blahblah.html'

    else:

        url = new_url

    html = urllib.request.urlopen(url)

    soup = BeautifulSoup(html, 'html.parser')

    tags = soup('a')

    for tag in tags:

        while count_b < 3:

            print(tag)

            count_b += 1

            if count_b == 3:

                strtag = str(tag)

                linkstart = strtag.find('http')

                linkend = strtag.find('html')

                namestart = strtag.find('>')

                nameend = strtag.find('<',namestart)

                new_url = strtag[linkstart:linkend+4]

     names.append(strtag[namestart+1:nameend])

                break

    count_a += 1

我对编码非常陌生。我上周刚开始学习Python,因此请原谅简单而优雅的代码。另外,如果您将答案保持简单并提供大量解释,我将不胜感激。

0 个答案:

没有答案