我想得到下一个html代码中的页数:
<span id="viewns_Z7_AVEQAI930OBRD02JPMTPG21004_:form1:textfooterInfoNumPagMAQ" class="outputText marginLeft0punto5">1</span>
<span id="viewns_Z7_AVEQAI930OBRD02JPMTPG21004_:form1:textfooterInfoTotalPaginaMAQ" class="outputText marginLeft0punto5">37</span>
<span id="viewns_Z7_AVEQAI930OBRD02JPMTPG21004_:form1:textfooterTotalTotalMAQ" class="outputText marginLeft0punto5">736</span>
目标是得到数字1,37和736
我的问题是我不知道如何定义行来提取数字,例如数字1:
req = requests.get(url)
soup = BeautifulSoup(req.text, "lxml")
first_page = int(soup.find('span', {'id': 'viewns_Z7_AVEQAI930OBRD02JPMTPG21004_:form1:textfooterInfoNumPagMAQ'}).getText())
非常感谢
编辑:我终于找到了含硒的解决方案:
numpag = int(driver.find_element_by_xpath('//*[@id="viewns_Z7_AVEQAI930OBRD02JPMTPG21004_:form1:textfooterInfoNumPagMAQ"]').text)
pagtotal = int(driver.find_element_by_xpath('//*[@id="viewns_Z7_AVEQAI930OBRD02JPMTPG21004_:form1:textfooterInfoTotalPaginaMAQ"]').text)
totaltotal = int(driver.find_element_by_xpath('//*[@id="viewns_Z7_AVEQAI930OBRD02JPMTPG21004_:form1:textfooterTotalTotalMAQ"]').text)
感谢@abarnert,对不起我的问题,这是我的第一个帖子=)
您提供的代码已经适用于您提供的示例
我猜您的问题是,它不适用于任何其他页面,可能是因为这些
id
值每次都不同如果是这样的话,您需要查看(或向我们展示)多个不同的输出,以确定是否有一个可识别的模式,您可以与正则表达式或充满字符串操作的函数或其他什么匹配。请参阅文档中的Searching the tree,了解可以使用的不同类型的过滤器
大概是
Z7
和AVEQAI930OBRD02JPMTPG21004
每次都被不同的大写和数字字符串所取代,但其余的格式总是一样的?如果是这样,您可以使用一些非常明显的正则表达式:这适用于您提供的示例,也适用于在与
.*
匹配的部分中具有不同字符串的不同页面而且,即使我的猜测是错误的,这应该告诉你如何写一个搜索你实际上做必须搜索的东西
作为补充说明,您使用的是未记录的遗留函数
getText()
。这意味着您正在复制和粘贴古老的BS3代码。别那么做。其中一些将与BS4一起工作,即使没有文档记录(如本例中),但这仍然是一个坏主意。这就像试图用python3运行python2源代码,而不了解它们之间的区别这里您想要的是
get_text()
、string
或text
,您应该看看这三者在文档中的含义,以了解它们之间的区别,但是在这里,标记中唯一的东西是文本字符串,所以它们恰好做了相同的事情相关问题 更多 >
编程相关推荐