【问题标题】:Python 3.x: finding the biggest number from page navigation section?Python 3.x:从页面导航部分找到最大的数字?
【发布时间】:2017-07-19 05:54:32
【问题描述】:

我正在创建一个程序来从页面导航栏中获取最大的数字。我非常接近完成程序。但是因为我刚开始第一次编码 3 天,我无法找到这里的缺陷。

import bs4
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup

#List for extended links to the base url
links = ['Link_1/','Link_2/','Link_3/']

#Function to find out the biggest number present in the page navigation 
section.Every element before 'Next→' is consist of the upper limit
def page_no():
 bs = soup(html, "html.parser")
 max_page = bs.find('a',{'class':'next page-numbers'}).findPrevious().text
 print(max_page)

#url loop
for url in links:
 my_urls ='http://www.example.com/category/{}/'.format(url)
 page_no()

# opening up connection,grabbing the page
uClient = uReq(my_urls)
page_html = uClient.read()
uClient.close()

错误: Traceback (most recent call last): line 20, in <module> page_no()

line 14, in page_no
bs = soup(html, "html.parser")
NameError: name 'html' is not defined`

我试图在不创建函数的情况下创建这个程序,但它只是返回列表中最后一个元素的值而不是所有数字。

困惑:

def page_no()#Url Loop# opening up connection,grabbing the page 的元素序列感到困惑(我可能是错的)

提前致谢。

页面导航器示例:

1 2 3 … 15 Next →

【问题讨论】:

  • bs = soup(html, "html.parser") 行中,html 不知从何而来,你在调用它之前没有定义它,所以你得到了错误name 'html' is not defined
  • @OferSadan 你是对的。投票结束。
  • 我不会投票关闭...这是一个合理的问题

标签: python python-3.x beautifulsoup urllib


【解决方案1】:

您正试图在抓取页面之前对其进行解析。

移动这条线

page_no()

到最后,在您抓取页面之后。但即便如此,您将“抓取页面”命名为page_html,但在page_no() 中,您正在寻找另一个名称html。所以你也可以尝试改变它,替换

bs = soup(html, "html.parser")

bs = soup(page_html, "html.parser")

P.S,您的代码中还有其他问题,例如缩进问题,您也必须对其进行整理才能使其正常工作

【讨论】:

  • 感谢您的帮助,您能否指出缩进的错误。因为我没有收到相同的警告,现在程序正在运行,但我只是从最后一个元素中获取值的列表。
  • 看看你粘贴的代码,没有任何缩进...跨度>
  • 这是一个粘贴错误,我的错。我现在在这里做了缩进。但是为什么我只得到最后一个元素的值?你能帮我吗?
  • 不是没有看到实际的网址,但无论哪种方式,它都是一个新问题的主题......我建议您使用正确的代码和您正在解析的真实网址打开另一个问题,并提供预期输出与您当前获得的输出
猜你喜欢
  • 2021-08-12
  • 2014-01-27
  • 1970-01-01
  • 2018-04-15
  • 1970-01-01
  • 2021-11-26
  • 1970-01-01
  • 2020-10-31
  • 1970-01-01
相关资源
最近更新 更多