我用python创建了一个脚本,使用请求模块和BeautifulSoup库从网站获取不同成员的名称。脚本可以完美地从第一页和第二页获取名称。然而,它从第三页开始就删除了相同的名称。我可以注意到,下一页逻辑在__EVENTTARGET
的值范围内,如dnn$ctr410$MemberSearch$grdMembers$ctl00$ctl02$ctl01$ctl07
和dnn$ctr410$MemberSearch$grdMembers$ctl00$ctl02$ctl01$ctl09
等等。脚本可以相应地增加数字,但第二页之后的结果保持不变
要填充此website的结果,只需单击搜索按钮而不做任何更改。然后,您可以单击2,3,4 e.t.c页面进入相关页面
我尝试过(从前两页中删除数据):
import requests
from bs4 import BeautifulSoup
link = 'https://www.icsi.in/student/Members/MemberSearch.aspx?SkinSrc=%5BG%5DSkins/IcsiTheme/IcsiIn-Bare&ContainerSrc=%5BG%5DContainers/IcsiTheme/NoContainer'
with requests.Session() as s:
s.headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1; ) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
r = s.get(link)
soup = BeautifulSoup(r.text,"lxml")
payload = {i['name']:i.get('value','') for i in soup.select('input[name]')}
payload['__EVENTTARGET'] = 'dnn$ctr410$MemberSearch$btnSearch'
page = 5
while True:
r = s.post(link,data=payload)
soup = BeautifulSoup(r.text,"lxml")
for item in soup.select("span[id$='_lblFullName']"):
print(item.text)
page+=2
payload = {i['name']:i.get('value','') for i in soup.select('input[name]')}
if len(str(page))==1:
payload['__EVENTTARGET'] = 'dnn$ctr410$MemberSearch$grdMembers$ctl00$ctl02$ctl01$ctl0{}'.format(page)
else:
payload['__EVENTTARGET'] = 'dnn$ctr410$MemberSearch$grdMembers$ctl00$ctl02$ctl01$ctl{}'.format(page)
payload['__dnnVariable'] = {'__scdoff':'1','__dnn_pageload':'__dnn_setScrollTop();'}
payload['ScrollTop'] = '400'
How can I fetch the names from the rest of the pages after the second page?
实际上,您需要包含完整的post
Payload
参数我们必须在相同的
Session
内使用requests.Session()
来实现这一点,因为网站分页使用的是基于__dnnVariable
的旋转function
,服务器在JS
请求下接收它,该请求被转换为循环实际上它的意思是
Next
因此,我首先发出了一个
GET
请求,并获取了所需的params
(其中一些是动态的,另一些是静态的)然后,我在同一个
session
下发出了一个post请求输出:
如果我从有效负载中删除
dnn$ctr410$MemberSearch$grdMembers$ctl00$ctl02$ctl01$ctl02
等箭头按钮键,它就会开始工作但您可以使用来自
αԋɱҽԃ αмєяιcαη
答案的方法来确保只发送所需的值编辑:页面使用更复杂的系统,10页后显示新链接,但带有旧值
ctl07
,ctl09
。我使用带有箭头的“从按钮到下一页”的“名称”来代替此链接-开始时,它的值为ctrl28
,但在10页之后,它的值为ctrl30
(因为有更多的链接-它将链接...
添加到下一页/上一页的10页列表中)相关问题 更多 >
编程相关推荐