刚解决一个问题,又有新的问题,在使用ChromiumPage中如何监听一个确定的链接,两个相似的链接干扰,两个链接都很长,有部分参数不同,每次链接都有加密数据在变,无法固定
api/qt/clist/get?cb=jQuery1123024554575312602211_1724157038962&fid=f62&po=1&pz=50&pn=2&np=1&fltt=2&invt=2&ut=b2884a393a59ad64002292a3e90d46a5&fs=m%3A90+t%3A3&fields=f12%2Cf14%2Cf2%2Cf3%2Cf62%2Cf184%2Cf66%2Cf69%2Cf72%2Cf75%2Cf78%2Cf81%2Cf84%2Cf87%2Cf204%2Cf205%2Cf124%2Cf1%2Cf13
api/qt/clist/get?cb=jQuery1123024554575312602211_1724157038958&pn=1&pz=500&po=1&np=1&fields=f12%2Cf13%2Cf14%2Cf62&fid=f62&fs=m%3A90%2Bt%3A3&ut=b2884a393a59ad64002292a3e90d46a5&_=1724157038966
page = ChromiumPage()
page.listen.start('api/qt/clist/get')
在翻页过程中有时监听到的是前一个链接,有时是后一个,无法同时抓到两个或者指定的一个,尝试通过参数确定不成功,网上没有找到例子;
import json
import pandas as pd
import numpy as np
import csv
import re
from DrissionPage import ChromiumPage
def ff_em_bkzj():
page = ChromiumPage()
df=pd.DataFrame([])
nn=1
page.listen.start('api/qt/clist/get')
page.get(url)
res = page.listen.wait()
while 1:
time.sleep(3)
#print(res.url) # 输出数据包url
for ii in range(3):
html=res.response.body
#print(html)
pattern = re.compile('\((.*)\)',re.S)
items = re.findall(pattern,html)
hjson = json.loads(items[0])
#print(hjson)
df0=pd.DataFrame(hjson["data"]["diff"])
if df0.shape[1]>8:
#print(df0)
df=pd.concat([df,df0])
break
else:
print(' ',ii)
print(nn,'df',df0.shape)
page.scroll.to_bottom()
res = page.listen.wait() # 等待并获取一个数据包
#time.sleep(1)
ele=page.ele('xpath://div[@class="pagerbox"]/a[text()="下一页"]')
if ele:
#time.sleep(2)
ele.click()
res = page.listen.wait() # 等待并获取一个数据包
nn=nn+1
else:
break
df=df.dropna(subset=['f2','f3']) #NaN 删去NaN行
print(df)
df.to_csv('ttt.csv', encoding='ansi',index=False)#debug
ff_em_bkzj()
恳请指教,谢谢
如果能够取得url的话,用“ = ” 号对url进行分割,用正则表达式判断最后一个 = 号之后是否是纯数字,这样应该可以判断是哪个链接