python - 网页抓取 - 进入第 2 页

标签 python web-scraping beautifulsoup

如何进入数据集的第二页?无论我做什么,它只返回第 1 页。

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

myURL = 'https://jobs.collinsaerospace.com/search-jobs/'

uClient = uReq(myURL)
page_html = uClient.read()
uClient.close()

page_soup = soup(page_html, "html.parser")
container = page_soup.findAll("section", {"id":"search-results"}, {"data-current-page":"4"})


for child in container:
    for heading in child.find_all('h2'):
        print(heading.text)

最佳答案

该站点实际上使用 JSON 返回包含所有条目的 HTML。此 API 允许指定页码以及每页返回的记录数,增加此值将进一步提高速度。

返回的 JSON 包含 3 个键。过滤信息、结果 HTML 和指示是否返回工作的标志。当您到达页面末尾时,最后一个条目可用于发出信号。

您可能想看看非常流行的 Python requests 库,它可以简化为您生成正确 URL 的过程,而且速度也很快。

import bs4
import requests
from bs4 import BeautifulSoup as soup

params = {            
    "CurrentPage" : 1,
    "RecordsPerPage" : 100,
    "SearchResultsModuleName" : "Search Results",
    "SearchFiltersModuleName" : "Search Filters",
    "SearchType" : 5,
}

myURL = 'https://jobs.collinsaerospace.com/search-jobs/results'
page = 1
more_jobs = True

while more_jobs:
    print(f"\nPage {page}")
    params['CurrentPage'] = page
    req = requests.get(myURL, params=params)
    json = req.json()
    page_soup = soup(json['results'], "html.parser")
    container = page_soup.findAll("section", {"id":"search-results"}, {"data-current-page":"4"})

    for child in container:
        for heading in child.find_all('h2'):
            print(heading.text)

    more_jobs = json['hasJobs']  # Did this return any jobs?
    page += 1

关于python - 网页抓取 - 进入第 2 页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56819523/

相关文章:

python - 如何在 Gurobi Python 中将决策变量与矩阵相乘

python - 使用 Python 正则表达式查找两个变量之间的 HTML

python-3.x - Python 请求模块异常 SSLError

python - 使用 BeautifulSoup4 (python 3.4) 删除所有 HTML 标签

python - 我的正则表达式 "appears"在测试器中工作,但在我的实际代码中不起作用

python - 让 BeautifulSoup 忽略脚本标签内的内容

python - Beautiful Soup 将标准普尔变成标准普尔; AT&T 变成 AT&T; ?

python - UPDATE不使用模型保存方法

python - 如何通过替换 url 的一部分来解析数据

python - 正弦计算比余弦慢几个数量级