繁体   English   中英

如何使用 Python 抓取具有相同 URL 的 HTML 表中的多个页面?

[英]How to scrape multiple pages in HTML table with same URL with Python?

我正在尝试从以下公共网站上抓取招聘信息:

https://newbraunfels.tedk12.com/hire/Index.aspx

我知道这里有一些类似的问题,但我已经关注了所有这些问题,但由于我的 javascript/html 技能有限,我似乎无法弄清楚。

我可以毫无问题地获得第一页,但似乎无法访问以下三页。

我最好的尝试如下,但它仍然只返回列表的第一页:

import requests
from bs4 import BeautifulSoup

soup = BeautifulSoup(requests.get(url).content, "html.parser")


def load_page(soup, page_num):
    payload = {
        "__EVENTTARGET": "",
        "__EVENTARGUMENT": "PageIndexNumber${}".format(page_num),
    }
    for inp in soup.select("input"):
        payload[inp["name"]] = inp.get("value")
    soup = BeautifulSoup(requests.post(url, data=payload).content, "lxml")
    
    return soup


# print hospitals from first page:
for jobs in soup.select("table"):
    print(jobs.text)

# load second page
soup = load_page(soup, 2)
for jobs in soup.select("table"):
    print(jobs.text)

提前谢谢你。

在这种情况下,一种更简单的方法可能是使用 get 变量直接查询每个页面。 “StartIndex”变量应该是 50 的倍数,因为每页显示 50 个结果。 对于要抓取的每一页结果,只需将其增加 50。

第 1 页: https ://newbraunfels.tedk12.com/hire/Index.aspx?JobListAJAX=Paging&StartIndex=0&ListID=JobList&SearchString=

第 2 页: https ://newbraunfels.tedk12.com/hire/Index.aspx?JobListAJAX=Paging&StartIndex=50&ListID=JobList&SearchString=

第 3 页: https ://newbraunfels.tedk12.com/hire/Index.aspx?JobListAJAX=Paging&StartIndex=100&ListID=JobList&SearchString=

..ETC。

返回的对象是 XML,因此您还需要将文档树导入到 beautiful soup 中,以便您可以正常定位元素。 请参阅此处的示例:

https://linuxhint.com/parse_xml_python_beautifulsoup/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM