Python 从“.aspx”站点跨多个页面显示的抓取结果

Python 从“.aspx”站点跨多个页面显示的抓取结果,python,python-3.x,web-scraping,python-requests,Python,Python 3.x,Web Scraping,Python Requests,我正在尝试清理此网站: 如果我手动搜索,我会看到结果分布在多个页面上,但当我尝试使用下面的脚本获取结果时,我会重复从第一个页面获取结果: 我试过: import requests from bs4 import BeautifulSoup url = 'http://www.occeweb.com/MOEAsearch/index.aspx' session = requests.Session() r = session.get(url) soup = BeautifulSoup(r.te

我正在尝试清理此网站:

如果我手动搜索,我会看到结果分布在多个页面上,但当我尝试使用下面的脚本获取结果时,我会重复从第一个页面获取结果:

我试过:

import requests
from bs4 import BeautifulSoup

url = 'http://www.occeweb.com/MOEAsearch/index.aspx'

session = requests.Session()
r = session.get(url)
soup = BeautifulSoup(r.text,'lxml')
for page in range(1,3):
    payload = {i['name']:i.get('value','') for i in soup.select('input[name]')}
    payload['txtSearch'] = 'A'
    payload['__EVENTTARGET'] = 'gvResults'
    payload['__EVENTARGUMENT'] = f'Page${page}'
    res = session.post(url,data=payload)
    soup = BeautifulSoup(res.text,"lxml")
    for items in soup.select("#gvResults tr")[1:2]:
        data = [item.get_text(strip=True) for item in items.select("td")]
        print(data)

我怎样才能从其他页面获得结果呢?

您的问题发生在下一行

有效负载={i['name']:i.get'value',表示汤中的i。选择'input[name]} 当您执行第二页搜索时,会发生什么情况?它会发送一个额外的btnSearch负载,这会导致它成为一个搜索操作,而不是下一页操作

修复非常简单,下面是更新的代码

导入请求 从bs4导入BeautifulSoup url='1〕http://www.occeweb.com/MOEAsearch/index.aspx' 会话=请求。会话 r=session.geturl soup=BeautifulSoupr.text,“lxml” 对于范围为1,3的页面: 有效负载={i['name']:i.get'value',表示汤中的i。选择'input[name]} 有效负载['txtSearch']='A' 有效负载[''事件目标']=“gvResults” 有效负载[''事件参数']=f'Page${Page}' 如果页面>1: 有效载荷,弹出“btnSearch” res=会话。姿势,数据=有效载荷 soup=BeautifulSoupres.text,lxml 对于汤中的项目,选择gvresults tr[1:2]: 数据=[item.get_textstrip=True,适用于items中的项。选择td] 打印数据
你的问题发生在底线以下

有效负载={i['name']:i.get'value',表示汤中的i。选择'input[name]} 当您执行第二页搜索时,会发生什么情况?它会发送一个额外的btnSearch负载,这会导致它成为一个搜索操作,而不是下一页操作

修复非常简单,下面是更新的代码

导入请求 从bs4导入BeautifulSoup url='1〕http://www.occeweb.com/MOEAsearch/index.aspx' 会话=请求。会话 r=session.geturl soup=BeautifulSoupr.text,“lxml” 对于范围为1,3的页面: 有效负载={i['name']:i.get'value',表示汤中的i。选择'input[name]} 有效负载['txtSearch']='A' 有效负载[''事件目标']=“gvResults” 有效负载[''事件参数']=f'Page${Page}' 如果页面>1: 有效载荷,弹出“btnSearch” res=会话。姿势,数据=有效载荷 soup=BeautifulSoupres.text,lxml 对于汤中的项目,选择gvresults tr[1:2]: 数据=[item.get_textstrip=True,适用于items中的项。选择td] 打印数据
您需要新响应中的\uuuuu VIEWSTATE、\uuuuu EVENTVALIDATION,还需要设置\uuuu EVENTTARGET、\uuuuuu EventArguments。您需要新响应中的\uuuuu VIEWSTATE、\uuuuuuuu EVENTVALIDATION,还需要设置\uuuuuuuEventTarget、\uuuuuuu EventArguments