使用Python BeautifulSoup查找页数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Python BeautifulSoup查找页数相关的知识,希望对你有一定的参考价值。

我想从Steam页面中提取总页码(在本例中为11)。我相信以下代码应该工作(返回11),但它返回一个空列表。就好像它没有找到paged_items_paging_pagelink类。

import requests
import re
from bs4 import BeautifulSoup
r = requests.get('http://store.steampowered.com/tags/en-us/RPG/')
c = r.content
soup = BeautifulSoup(c, 'html.parser')


total_pages = soup.find_all("span",{"class":"paged_items_paging_pagelink"})[-1].text
答案

如果您检查页面源,则所需的内容不可用。这意味着它是通过Javascript动态生成的。

页码位于<span id="NewReleases_links">标记内,但在页面源中,HTML仅显示以下内容:

<span id="NewReleases_links"></span>

最简单的方法是使用Selenium

但是,如果您查看页面源,可以使用文本Showing 1-20 of 213 results 。所以,你可以抓住这个并计算页数。

必填HTML:

<div class="paged_items_paging_summary ellipsis">
    Showing 
    <span id="NewReleases_start">1</span>
    -
    <span id="NewReleases_end">20</span> 
    of 
    <span id="NewReleases_total">213</span> 
    results         
</div>

码:

import requests
from bs4 import BeautifulSoup

r = requests.get('http://store.steampowered.com/tags/en-us/RPG/')
soup = BeautifulSoup(r.text, 'lxml')

def get_pages_no(soup):
    total_items = int(soup.find('span', id='NewReleases_total').text)
    items_per_page = int(soup.find('span', id='NewReleases_end').text)
    return round(total_items/items_per_page)

print(get_pages_no(soup))
# prints 11

(注意:我仍然建议使用Selenium,因为这个站点的大部分内容都是动态生成的。刮掉这样的所有数据会很痛苦。)

另一答案

不使用BeautifulSoup的另一种更快的方法:

import requests

url = "http://store.steampowered.com/contenthub/querypaginated/tags/NewReleases/render/?query=&start=20&count=20&cc=US&l=english&no_violence=0&no_sex=0&v=4&tag=RPG" # This returns your query in json format
r = requests.get(url)

print(round(r.json()['total_count'] / 20)) # total_count = number of records, 20 = number of pages shown

11

以上是关于使用Python BeautifulSoup查找页数的主要内容,如果未能解决你的问题,请参考以下文章

使用 python 和正则表达式 BeautifulSoup lxml 查找文本

使用 BeautifulSoup 查找网页上的特定文本

python 之 BeautifulSoup标签查找与信息提取

python爬虫beautifulsoup查找定位Select用法

python/beautifulsoup 查找所有带有特定锚文本的 <a href>

Python开发模块:BeautifulSoup