无法让我的脚本使用发布请求填充结果



我创建了一个脚本,使用 python 和 selenium 来解析idvikeycbhtmlfragid,这些脚本旨在用作有效负载,同时在 http 请求后使用。由于我发现使用请求很难抓取idvikeycbhtmlfragid,我想使用硒来抓取它们,以便我可以在发出帖子请求时使用它们。

我正在尝试使用Entity Name Or Identifier旁边的输入框中的a填充结果。我可以注意到结果是通过我试图以编程方式实现的 post 请求填充的。

网站链接

要填充结果,必须按照此图像中的顺序步骤操作,最终导致此图像

我试过:

import re
import requests
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
link = 'https://www.businessregistration.moc.gov.kh/'
post_url = 'https://www.businessregistration.moc.gov.kh/cambodia-master/viewInstance/update.html?id={}'
payload = {
'QueryString': 'a',
'SourceAppCode': 'cambodia-br-soleproprietorships',
'OriginalVersionIdentifier': '',
'nodeW772-Advanced': 'N',
'_CBASYNCUPDATE_': 'true',
'_CBHTMLFRAGNODEID_': 'W762',
'_CBHTMLFRAGID_': '',
'_CBHTMLFRAG_': 'true',
'_CBNODE_': 'W778',
'_VIKEY_': '',
'_CBNAME_': 'buttonPush'
}
def get_content(wait,link):
driver.get(link)
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,"a[data-rel='#appMainNavigation']"))).click()
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,"a[class$='menu-soleproprietorships']"))).click()
elem = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,"a[class$='menu-brSoleProprietorSearch']")))
driver.execute_script("arguments[0].click();",elem)
item_id = driver.current_url.split("id=")[1].split("&_timestamp")[0]
x_catalyst = re.findall(r"sessionId:'(.*?)',", str(driver.page_source), flags=re.DOTALL)[0]
item = re.findall(r"viewInstanceKey:'(.*?)',", str(driver.page_source), flags=re.DOTALL)[0]
elem = re.findall(r"guid:(.*?),", str(driver.page_source), flags=re.DOTALL)[0]
return item_id,x_catalyst,item,elem
def make_post_requests(item_id,x_catalyst,item,elem):
payload['_VIKEY_'] = item
payload['_CBHTMLFRAGID_'] = elem
res = requests.post(post_url.format(item_id),data=payload,headers={
'user-agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36',
'x-requested-with':'XMLHttpRequest',
'x-catalyst-session-global':x_catalyst
})
soup = BeautifulSoup(res.text,"lxml")
result_count = soup.select_one("[class='appPagerBanner']")
print(result_count)
if __name__ == '__main__':
driver = webdriver.Chrome()
wait = WebDriverWait(driver,10)
item_id,x_catalyst,item,elem = get_content(wait,link)
make_post_requests(item_id,x_catalyst,item,elem)
driver.quit()

当我执行上述脚本时,我可以发现那里没有结果。所以,我想我走错了什么地方。

如何让我的脚本使用发布请求填充结果?

好吧,POST请求需要来自网站的多个parameters。所以这是计划。

  1. 我们将向target网址提出GET请求,并收集我们所有必需的POST数据。
https://www.businessregistration.moc.gov.kh/cambodia-master/relay.html?url=https%3A%2F%2Fwww.businessregistration.moc.gov.kh%2Fcambodia-master%2Fservice%2Fcreate.html%3FtargetAppCode%3Dcambodia-master%26targetRegisterAppCode%3Dcambodia-br-soleproprietorships%26service%3DregisterItemSearch&target=cambodia-master
  1. 然后,我们将检查/验证POST请求的structure如何在要求您trackPOSTparameters以及它们如何在后面操作的POST请求中应用。

    • nodeWxxx-Advanced其中xxx是自动生成的 3 位数字。
    • _CBHTMLFRAGNODEID_key还持有自动生成的value
    • _CBHTMLFRAGID_持有自动生成的unixtimestamp来验证post请求。
    • _CBNODE_是一个第一次自动生成的mechanismkey,但它随后以4点向上扎根,然后变得static
    • _VIKEY_持有一个value,该也在HTML来源中呈现。

    • _CBNAME_持有3不同的values,即buttonPushselectPagepageSizeChange,我们不需要使用第一个值。 因此,我们将在2日和3日工作。 我不需要向您解释这些值的作用,因为名称已经表达了含义。

    • _CBVALUE_充当双face键,它包含一个digit值,如果使用selectPage调用,则可以充当pagination,如果使用pageSizeChange调用,它可以充当每页itemssize。 其中4表示每页200个项目,这是最大值。

如果您解析HTML并找到多个Wxxx值,其中xxx是 3 位数字,您可能会发现这一点complicated,但我已经能够分析HOST结构本身。

  1. 现在我们已经准备好了POST数据。 但请注意,我们的GET请求被重定向到以下 URL。
https://www.businessregistration.moc.gov.kh/cambodia-master/viewInstance/view.html?id=

其中id实际上是自动生成的tokenhost将您的请求识别为有效请求与否。

  1. 现在,在发出POST请求之前,我们需要更改处理查看数据operationparameter。在我们的例子中,我们需要将view更改为update
  2. 如下
https://www.businessregistration.moc.gov.kh/cambodia-master/viewInstance/update.html?id
  1. 现在我们准备调用target但首先我们将提出POST请求,将每个pageitems更改为200项。 正如我上面描述的。

  2. 现在,在我们之前的POST之后,我们将创建一个POSTS循环,以使用我们的form data迭代页面。

website的当前result1,421这意味着(200项乘以8将得到1600),但最后一页仅包含21项,因此这就是1421

下面是最终代码:

import requests
from bs4 import BeautifulSoup
import re
one = "https://www.businessregistration.moc.gov.kh/cambodia-master/relay.html?url=https%3A%2F%2Fwww.businessregistration.moc.gov.kh%2Fcambodia-master%2Fservice%2Fcreate.html%3FtargetAppCode%3Dcambodia-master%26targetRegisterAppCode%3Dcambodia-br-soleproprietorships%26service%3DregisterItemSearch&target=cambodia-master"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0"
}

def main(url):
with requests.session() as req:
r = req.get(url, headers=headers, allow_redirects=True)
node = re.search(r"nodeWd{3}-Advanced", r.text).group()
nodeid = re.search(r"AsyncWrapperWd{3}", r.text).group()
agid = re.search(r"guid:(d+)", r.text).group(1)
cbnode = re.findall(r"Callback('([^']*)'", r.text)[5]
vikey = re.search(r"viewInstanceKey:'([^']*)'", r.text).group(1)
data = {
'QueryString': 'a',
'SourceAppCode': 'cambodia-br-soleproprietorships',
'OriginalVersionIdentifier': '',
f"{node}": 'N',
'_CBASYNCUPDATE_': 'true',
'_CBHTMLFRAGNODEID_': nodeid[-4:],
'_CBHTMLFRAGID_': agid,
'_CBHTMLFRAG_': 'true',
'_CBNODE_': f"W{int(cbnode[1:])+4}",
'_VIKEY_': vikey,
'_CBNAME_': 'selectPage'
}
target = r.url.split("&")[0].replace("view.", "update.")
change = data.copy()
change['_CBNAME_'] = "pageSizeChange"
change['_CBVALUE_'] = "4"
r = req.post(target, headers=headers, data=change)
for num in range(1, 9):
print(f"Extracting Page# {num}n {'*' * 40}")
data['_CBVALUE_'] = num
r = req.post(target, headers=headers, data=data)
soup = BeautifulSoup(r.content, 'html.parser')
for item in soup.findAll("span", class_="appReceiveFocus")[3:]:
print(item.text)

main(one)

也请在收到答案后停止删除您的question,就像您之前通常在收到答案后删除帖子一样。

输出示例:

Extracting Page# 1
****************************************
អេមី ជេមស៍ / AMY GEMS (50009790)
អាហារដ្ឋាន លីន លៀនជីន ហ៊្វូដ ហ្វ្លេវើ / AHARATHAN LIN LIANJIN FOOD FLAVOR (50009800)
អាមេទីស ដាយមិន ខេធីវី / AMETHYST DIAMOND KTV (50009801)
អេស៊ា ដាយអឹម៉ិន ស៊ីធី អេនធើប្រាយ / ASIA DIAMOND CITY ENTERPRISE (50009845)
អរុណ យ៉ាណា / ARUN YANA (50009848)
អេ ដឺ ស៊ាវ ជី ឌាន / A DE XIAO CHI DIAN (50009856)
អង្គរ ផែល ប៊ូទិក / ANGKOR PAL BOUTIQUE (50009862)
អូហ្ក្រេ ឌុយ សូឡី / AUGRE DU SOLEIL (50001007)
អង្គរធំ មន្ទីរពហុព្យាបាល និង សម្ភព / ANGKOR THOM MONTY PEAHUK PYEABAL & SAMPHUB (50009905)
អាមីកា ត្រាវែល (កាំបូដ្យ) / AMICA TRAVEL (CAMBODGE) (50009916)
អង្គរ ជិនសារ​ ហ៊្វូដ / ANGKOR JINSHA FOOD (50009973)
អចលនទ្រព្យ វ៉ាន់សៀង / ACHALNAK TROP VEAN SIENG (50009986)
អាឡាដាំង សឹបផ្លាយអឺរ / ALADANG SUPPLIER (50010017)
អាន ស៊ី មីន ណាន ស៊ាវ ឈី / AN XI MIN NAN XIAO CHI (50010068)
អង្គរ មែនហ្គោ ទ្រី រីហ្សត / ANGKOR MANGO TREE RESORT (50010072)
អាហារដ្ឋាន ជៀ មីង យៀក កាយ / AHARATHAN JIA MING YUE CAI (50010073)
អូប៊ែ អេលេហ្វិន ប្លង្គ / AUBERGE ELEPHANT BLANC (50001029)
អានីស ស្តារ អ៊ិនវ៉ាយរ៉ិនម៉ិនថល ខូតធីង / ANISE STAR ENVIRONMENTAL COATINGS (50010091)
អរសាំ ហៅស៍ វីឡា / AWESOME HOUSE VILLA (50010131)
អាន វេងស្រ៊ុន ត្បូងឃ្មុំ / AN VENGSRUN TBONG KHMUM (50010150)
ភោជនីយដ្ឋាន អា យុង តា ផាយ តាំង / AH YONG TA PAI TANG RESTAURANT (50010177)
អា ឆ័ន ចុង ឆាង ធីង / A CHUAN ZHONG CHAN TING (50010232)
អាតឡូវ ខនសាល់ធីង / ARTLOW CONSULTING (50010235)
សណ្ឋាគារ អង្គរ យ៉ាយ័ន / ANGKOR YAYUAN HOTEL (50010236)
អេ.អេម ហាងបញ្ចាំ / A.M HANG BANH CHAM (50010326)
អង់ទ្រីក្ស៍ ត្រេឌើរ / ANTRIKSH TRADERS (50010335)
អង្គរ សុខសាន្តត្រាណ / ANGKOR SOKSAN TRAN (50001055)
អង្គរ ស៊ែរ ធួរ / ANGKOR SHARE TOURS (50010341)
អង្គរ សិលា ពេជ្រ / ANGKOR SEILA PICH (50001056)
អ័ង ចូង អ័ង / ANG CHOUNG ANG (50010382)
អៅ មិន ជិន ឡុង 18 / AO MEN JIN LONG 18 (50010387)
អង្គរ ភើល / ANGKOR PEARL (50001067)
ភោជនីយដ្ឋាន អូ ម៉ាស្សេ / AU MARCHE RESTAURANT (50010465)
ភោជនីយដ្ឋាន អេ អាយ / A I RESTAURANT (50010472)
អាន ស៊ី មីង ស៊័ន ជឹន ស័រ / AN XI MING XUAN ZHEN SUO (50010513)
អាម៉ាណូ ឃែរ វ៉ធើរ / AMANO CARE WATER (50010521)
អាសស្តា វ៉ធើរ / ASSDA WATER (50010555)
អង្គរ ឡូធើស អាត / ANGKOR LOTUS ART (50010576)
សណ្ឋាគារ អេផល 2 / APPLE 2 HOTEL (50010621)
អាហារដ្ឋាន ផ្ទះបាយខ្មែរ ភឿក / AHARATHAN PHTEAH BAI KHMER PERK (50001084)
អង្គរ ស៊ីវុត្ថា ហូថេល / ANGKOR SIVUTHA HOTEL (50010625)
អាទីហ្វិក ឃីតឈិនវែរ អិកសុីប៊ីសិន សេនធ័រ / ARTIFEX KITCHENWARE EXHIBITION CENTER (50010654)
សណ្ឋាគារ អង្គរ យៀ ធីម / ANGKOR YEAR THEME HOTEL (50010659)
អេប៊ីឡូស៍ ឌីជីធលអេដជ៍ / ABILOS DIGITALEDGE (50010666)
សណ្ឋាគារ អេភី 7 ដេ / AP 7 DAY HOTEL (50010700)
អង្គរ អឹមេហ្ស៊ីង ហូលីដេ & ធួរ / ANGKOR AMAZING HOLIDAY & TOURS (50001092)
អេអេហ្វអេសស៊ី ព្រីមៀម ស្ទ័រ / AFSC PREMIUM STORE (50010703)
ភោជនីយដ្ឋាន អូ រ៉ង់ដេ-វូ / AU RENDEZ-VOUS RESTAURANT (50010720)
អន្តរជាតិលេខ១ វី យា ណា / ANYARAKCHEAT LEK 1 VY YA NA (50010733)
អៅ ម៉ាយ យ៉ា លី យី មេន ជ័ង / AO MAY YA LY YIE MAN CHUANG (50010740)
អេស្រ៊ី អ៊ិនធើណេសិនណល អ៊ិនវេសម៉ិន / ATHREE INTERNATIONAL INVESTMENT (50010764)
អង្គរ សាន់ អែន គុយ គីមយ៉ា ហៅស៍ / ANGKOR SUN AND KUY KIM YA HOUSE (50010801)
អាតឡូវ ខនសាល់ធីង I / ARTLOW CONSULTING I (50010809)
អា ហ្វុង ស៊ុបភើម៉ាឃីត / AR FONG SUPERMARKET (50010826)
អាម៉ាហ្សូន អេឡិចទ្រីក សប / AMAZON ELECTRIC SHOP (50010830)
អេស៊ីអិល ប៊ី ផនសប / ACL B PAWNSHOP (50010857)
អេពិក អ៊េចឌី អេទ្បីវាទ័រ / APEX HD ELEVATOR (50010891)
អេ & អ៊ីវ៉ា ហ្វេសិន / A & EVA FASHION (50010895)
អេននី វីល ម៉ាត / ANNIE WILL MART (50010912)
ភោជនីយដ្ឋាន អានហួយ ហ័យណាន / AN HUI HUAI NAN RESTAURANT (50010941)
អេនថូនី អឹផាតម៉ិន / ANTHONY APARTMENT (50010982)
អាណែត ប៊ីយូធី បាយ តូណូ ប្រ៊េន / AH NETH BEAUTY BY TONO BRAND (50011007)
ភោជនីយដ្ឋាន អេរេប៉ាស៍ ខារ៉ាខាស៍ / AREPAS CARACAS RESTAURANT (50011033)
អង្គរ ប៊ែដមីនថុន ក្លឹប សៀមរាប / ANGKOR BADMINTON CLUB SIEMREAP (50011075)
ភោជនីយដ្ឋាន អា វ៉ាង ជឺ ប៉ាវ អ៊ី / A WANG CHEU BAO YI RESTAURANT (50011102)
ភោជនីយដ្ឋាន អាយ សាង សួយ ជូរ / AI SHANG SHUI ZHOU RESTAURANT (50011103)
អេ ធី អ៊ីនជិននារីង វើកសប / A T ENGINEERING WORKSHOP (50011140)
អចលនទ្រព្យ ទឹកមាស ធីអិម / AKCHALNAKTROP TEUK MEAS TM (50011184)
អារុណរះ រ៉ូមែន / ARUNRASS ROMAIN (50011207)
អាអយ ហូសថេល / AOI HOSTEL (50011221)
អំពូលភ្លើង ពន្លឺពត៌មាន / AMPUOULPHLEUNG PONLEU POR MEAN (50011335)
អន្លង់ធំ វ៉ធើរ / ANLONGTHOUM WATER (50011341)
អង្គរ សរ សេរី រីហ្សត / ANGKOR SOR SEREI RESORT (50011347)
ផលិតកម្ម អាថាន់ ភាពយន្ត / ATHAN FILM PRODUCTION (50011350)
អេ អាយ ជី អូ កាហ្វេ / A I G O CAFE (50011416)
អាឡេវ៉ូ / ALEVU (50011433)
អាហារសមុទ្រចំហុយ ក្តាមមាស / AHAR SAMUTH CHOMHUY KDAMMEAS (50011470)
អសនៈ ប៊ូទិក វីឡា / ASANAK BOUTIQUE VILLA (50011487)
អាហារដ្ឋាន ផ្ទះបាយខ្មែរ ភឿក I / AHARATHAN PHTEAH BAI KHMER PERK I (50011504)
អចលនទ្រព្យ យាន ឈីងប៊ូ / ACHALNAKTRORP YAN QINGBU (50011521)
ភោជនីយដ្ឋាន អា ឡាំង សាវ ខាវ / AH LAING SHAO KHAO (50011555)
អារ៉ាយ៉ា អង្គរ រេសុីដេន I / ARAYA ANGKOR RESIDENCE I (50011563)
អាស៊ីង ភ្នាក់ងារទេសចរណ៏ / AH XING PNAKNGEATESACHOR (50011586)
សណ្ឋាគារ អង្គរ បូស្គី / ANGKOR BOSKY HOTEL (50011621)
ហាងនំប័ុង អូសសីុ ហ្គួមេ / AUSSIE GOURMET BAKERY (50001188)
សណ្ឋាគារ អង្គរ ហាវជាំង / ANGKOR HAOJIANG HOTEL (50011644)
អាប៉ូឡូ រៀល អុីស្ទេត / APOLLO REAL ESTATE (50011655)
ផ្ទះសំណាក់ អរុណរះ ហេងហេង / ARUNRAS HENG HENG GUESTHOUSE (50011717)
អូតូ ហាប់ (ខេមបូឌា) / AUTO HUB (CAMBODIA) (50011772)
ផ្សារទំនើប អាយ សាំង / AI SANG SUPERMARKET (50011790)
អាណាមេន ព្រីនធីង ហៅស៍ / ANAMAN PRINTING HOUSE (50011839)
អាតម៉ាលែន រីសត៍ / ATMALAND RESORT (50011842)
អាសុី ទ្រីលីហ្គល អុិនធើណេសិនណល ស្កូល (អេ.ធី.អាយ.អេស) / ASIA TRILINGUAL INTERNATIONAL SCHOOL (A.T.I.S) (50011
908)
អេ & ហ្សេត ម៉ាស្ទ័រ / A & Z MASTER (50011909)
អាយ យៀក ស៊ួយ ឡេវ ហ៊ួយ / AI YUE SHUI LIAO HUI (50011946)
អេស៊ា ម៉ាំងឃី ត្រាវែល (ខេមបូឌា) / ASIA MONKEY TRAVEL (CAMBODIA) (50011972)
អេលីស វីឡា / ALICE VILLA (50011993)
អង្គរ ប៊ែមប៊ូ ហ្វាយប៊ឺរ / ANGKOR BAMBOO FIBERS (50012035)
ភោជនីយដ្ឋាន អាដាហ្ស៊ី យេផេនីស / ADACHI JAPANESE RESTAURANT (50012044)
ភោជនីយដ្ឋាន អៃ សាង ជា ស៊ី / AI SHANG JIA SHI RESTAURANT (50012069)
អ៊ែតវេនឈ័រ សៀមរាប ​រេស៊ីដេន / ADVENTURE SIEMREAP RESIDENCE (50012135)
អាំង ប៊ីប៊ីឃ្យូ គ្រីល / ANG BBQ GRILL (50012143)
អចលនទ្រព្យ ចាសួន / AKCHALNAKTROP JASOUN (50012160)
អឹផាតម៉ិន 103 / APARTMENT 103 (50012161)
អេ.ឌី អាន ដុង អេនធើធេនមេន / A.D AN DONG ENTERTAINMENT (50012165)
អេស៊ា រីហ្វ្លេក ត្រាវែល អេន ធួរ / ASIA REFLECT TRAVEL AND TOUR (50012181)
អាណាខន់ដា តិចណូឡូជី / ANACONDA TECHNOLOGY (50012187)
អេឌីជេ គ្រីអេធីវ / ADJ CREATIVE (50012256)
អង្គរ ប៊ុន ធួរ / ANGKOR BUN TOUR (50012265)
អ៊ែមប៊ើ អង្គរ វីឡា ហូថេល អេន ស្ប៉ា / AMBER ANGKOR VILLA HOTEL AND SPA (50012311)
អៃ ឈីង ហាយ ប៊ូទីក ហូថេល / AI QING HAI BOUTIQUE HOTEL (50012317)
អនុស្សាវរីយ៍ល្អកោះរ៉ុង / ANUSAORY LAOR KOH RONG (50012340)
អង្គរ មែនហ្គោ ទ្រី រេស៊ីដេន ហូថេល / ANGKOR MANGO TREE RESIDENCE HOTEL (50012378)
សណ្ឋាគារ អេឡិចស៊ីស / ALEXIS HOTEL (50012418)
អចលនទ្រព្យ តាកទឺ / AKCHALNAK TROP TAK TEUR (50012422)
អាហារដ្ឋាន ហោ វ៉ាង សេង យ៉ាន / AHARATHAN HAO WANG SHENG YAN (50012429)
អាំង ថាណូ / AING TANO (50012439)
អាយសាង កុំព្យូទ័រ ណេត សប / AISANG COMPUTER NET SHOP (50012501)
អង្គរកាតាលីណា ប៊ូទីកវីឡា / ANGKOR CATALINA BOUTIQUE VILLA (50012509)
អេឌវ៉ាន់ឈ័រ ដូម រីសត / ADVENTURE DOME RESORT (50012521)
អេ.ភី.ធី.ធី ត្រាវែល & ធួរ / A.P.T.T TRAVEL & TOURS (50012528)
អឹផាតម៉ិន វីភី លី ហេង / APARTMENT VP LY HENG (50012540)
អាហារដ្ឋាន វីភី លី ហេង / AHARATHAN VP LY HENG (50012541)
អាដូរាស៍ ស្ប៉ា / ADORASS SPA (50012593)
ភោជនីយដ្ឋាន អាន់ណាពួរណា ឥណ្ឌាន / ANNAPURNA INDIAN RESTAURANT (50012620)
អវតាន ឆាតធើរ បាស / AVATAN CHARTER BUS (50012640)
អាយសាង កុំព្យូទ័រ ណេត សប សង្កាត់ 3 / AISANG COMPUTER NET SHOP SANGKAT 3 (50012660)
អាមីលីយ៉ា ប៊ីយូធី ខសមេធីក / AMILIYA BEAUTY COSMETICS (50012679)
អង្គរ ស្ក្រាប់ មរកត & ស្ប៉ា / ANGKOR SCRUB MOROKOT & SPA (50012680)
អេស៊ាន II ហាងបញ្ចាំ / ASIAN II HANG BANHCHAM (50012681)
អាហារដ្ឋាន ម្លប់សុបិន្ត / AHARATHAN MLOB SOBEN (50012682)
អា លីលី ប៊្រែន ប៊ីយូធី / AH LYLY BRAND BEAUTY (50012729)
អង្គរ ម៉ូនូមែន ហូថេល / ANGKOR MONUMENT HOTEL (50012733)
អេភីខេអ សៀមរាបអង្គរ ខនទ្រីសាយ / APKR SIEM REAP ANGKOR COUNTRY SIDE (50012752)
អង្គរ អុីន ហ្វ័រ ហូមស្តេ / ANGKOR UNE FOIS HOMESTAY (50000130)
អង្ករ ស្ថាបនិក / ANGKOR SATHABNEK (50001312)
អេ1 រីសាយខល / A1 RECYCLE (50012850)
អាដ័រ មី / ADORE ME (50012890)
អាវ គឹមហយ / AV KOEMHORY (50012896)
អឹផាតម៉ិន 19 / APARTMENT 19 (50012900)
អានខិន ខា រីភែ / ANKEN CAR REPAIR (50012909)
សណ្ឋាគារ អង្គរ សេនត្រល់ ផាក & ស្ប៉ា / ANGKOR CENTRAL PARK HOTEL & SPA (50012921)
អង្គរ ម៉ាវេលើស ត្រាវែល / ANGKOR MARVELLOUS TRAVEL (50012945)
អេនជូលី វីឡា / ANJULIE VILLA (50013023)
អាហារដ្ឋាន សំ សំអឿន ភូមិគៀនត្រជាក់ចិត្ត / AHARATHAN SAM SAM OEUN PHOM KEAN TRACHEAK CHET (50013043)
អេនី ផ្ទះ / ANNE PHTEASH (50013049)
អាបូរេស្ត ហូសថេល / ABOREST HOSTEL (50013073)
អេ.វី.អេស.អាយ.អេស.ប៊ី (ខេមបូឌា) / A.V.S.I.S.B (CAMBODIA) (50013098)
អា ហ៊ុយ ផាយ តាង / AR HUI PAI DANG (50013141)
អង្គរ ក្រូសង់ បេកឃើរី / ANGKOR CROISSANT BAKERY (50013147)
អាំង បានភាគ្យ / AING BANPHEAK (50001347)
អេនដ្រូ សម / ANDREW SAM (50013301)
ភោជនីយដ្ឋាន អារ៉ាប៊ីក សាវ៉ារម៉ា / ARABIC SHAWARMA RESTAURANT (50013339)
អាហារដ្ឋាន ថៅ យាន ទៅ ខៅ អ៊ី / AHARATHAN THAO YEAN TOUV KHAO YI (50013351)
អាហារដ្ឋាន យ៉ាន ជា ជឺ ប៉ៅ អ៊ី / AHARATHAN YAN CHEA CHEU PAO YI (50013352)
អាហារដ្ឋាន ចិន ឈីង អាយ ខៅ ប៉ា / AHARATHAN CHEN CHHING AI KHAO PA (50013353)
អាហារដ្ឋាន អ័រ អាយ អ័រ ជា ស៊ន់ ឆៃ អ៊ី / AHARATHAN OR AI OR CHEA SHUN CHHAI YI (50013354)
អាហារដ្ឋាន ចិន វួយ សា ស៊ាន សាវ ឈឺ / AHARATHAN CHEN WUY SHA SEAN SAV CHHER (50013355)
អាង-យី ប៊ីយូធី សប / ANG-YI BEAUTY SHOP (50013361)
ភោជនីយដ្ឋាន អាន់ណាពួរណា I ឥណ្ឌាន / ANNAPURNA I INDIAN RESTAURANT (50013381)
អឹឡាយអិន ត្រេនស្លេសិន រីសសស៍ / ALLIANCE TRANSLATION RESOURCE (50013407)
អង្គរ អ៉ិមប្រេស ឡេថិច / ANGKOR EMBRACE LATEX (50001377)
អេ.អ.វ៉ាយ ខសមេធីក / A.R.Y COSMETIC (50013492)
អេស៊ា ម៉ាឃីត ផាប់ស្ទ្រីត / ASIA MARKET PUB STREET (50001395)
អឹឈីវើ អិុនធើណេសិនណល ស្គូល / ACHIEVERS INTERNATIONAL SCHOOL (50001513)
អាតវ៉កស៍ ស្ទូឌីយោ (ខេមបូឌា) / ARTWORX STUDIOS (CAMBODIA) (50001559)
អេឃ្វើរៀស ហូថេល អេន អឺបេន រីហ្សត / AQUARIUS HOTEL AND URBAN RESORT (50001601)
អេមីធី អង្គរ សឺវីស / AMITY ANGKOR SERVICE (50001604)
អាទីឡា អង្គរ / ATTILA ANGKOR (50001613)
ផ្ទះសំណាក់ អង្គរ ភ្នំមាស / ANGKOR PHNOM MEAS GUESTHOUSE (50001646)
អង្គរ សេនលីន ត្រាវែល / ANGKOR SENLIN TRAVEL (50001659)
អាប៊ែនឌែន ឡៃ អុិនធើណេសិនណល​ ស្គូល / ABUNDANT LIFE INTERNATIONAL SCHOOL (50001664)
សណ្ឋាគារ អង្គរ ប៊ូធីក ត្រភីក / ANGKOR BOUTIQUE TROPIC HOTEL (50001668)
អង្គរ រង់ដេវូ វីឡា / ANGKOR RENDEZVOUS VILLA (50001703)
អង្គរ ហាត បឹងហ្គាឡូ / ANGKOR HEART BUNGALOW (50001751)
អេស៊ា អិចផ្លរើ ត្រាវែល / ASIA EXPLORER TRAVEL (50001758)
អាស្ត្រូ អេស៊ា ធួរ & ត្រាវែល សឺវីស / ASTRO ASIA TOUR & TRAVEL SERVICES (50001767)
អូន សុគន្ធា / AUN SOKUNTHEA (50001796)
អង្គរដេសធីណេសិនត្រាវែល / ANGKOR DESTINATION TRAVEL (50001799)
អង្គរ ធួរ បាស ត្រេនស្ព័តថេសិន / ANGKOR TOUR BUS TRANSPORTATION (50001809)
អង្គរ អ៉ិនធើ ហ្វីតណេស / ANGKOR INTER FITNESS (50001836)
អ៊ែតមឺស៊្វែរ រេសថឹរេន / ATMO SPHERE RESTAURANT (50001849)
អេស៊ា ជេមអាប់ ត្រាវែល / ASIA JAMUP TRAVEL (50001901)
អ៊ែបសឹលូត ធួរ & ត្រាវែល (ខេមបូឌា) / ABSOLUTE TOURS & TRAVEL (CAMBODIA) (50001903)
អង្គរ អេ ណាទួរ វ៉ូយ៉ាហ្ស៍ / ANGKOR ET NATURE VOYAGE (50001942)
អង្គរ ម៉ាល់ធីម៉ីឌៀ / ANGKOR MULTIMEDIA (50001949)
អេ.អេស.អេច ត្រាវែល I / A.S.H TRAVEL I (50001955)
អេអេ ប្រាយវេត ជើនី អេន វីឡា / AA PRIVATE JOURNEYS AND VILLAS (50001966)
អង្គរ ថោន ថ្មី / ANGKOR TOWN THMEY (50001990)
អឹឃូស្ទីក អេនធើធេនមិុន / ACOUSTIC ENTERTAINMENT (50002025)
អង្គរ បុរីប្រិមប្រិយ៍ ម៉ាស្សា ខ្មែរ បុរាណ / ANGKOR BOREIBREMBREI MASSAGE KHMER BORAN (50000204)
អប្សរា ស៊ីល សេនធ័រ / APSARA SILK CENTER (50002122)
អ៊ែតវេនឈ័រ អេស៊ា ត្រាវែល & ធួរ / ADVENTURE ASIA TRAVEL & TOURS (50002161)
អង្គរ ហ្វីលីង ប៊ូទីក / ANGKOR FEELING BOUTIQUE (50002206)
សណ្ឋាគារ អេ-វើខេសិន ប៊ូធីក / A-VACATION BOUTIQUE HOTEL (50002210)
អង្គរ ដឹ ថេន ប៊ែលស៍ / ANGKOR THE TEN BELLS (50002218)
អេមប្រាយ ថេលើរ / AMPRISE TAILOR (50002223)
អេស៊ា​ ហេបភី​ វីឡា / ASIA HAPPY VILLA (50002232)
អេ សិដ្ឋ អូតូ / A SETH AUTO (50002321)
អង្គរទិព្វ លីគង កាត់ដេរ / ANGKOR TIP LYKORNG KATDE (50002374)

我不确定为什么要模仿 POST 方法,因为您可以使用硒轻松自动化它。由于您已经在使用Selenium,因此您可以实现自动化,而无需担心准备原始请求和参数传递的潜在复杂性。

使用硒很容易使整个流程自动化。除非

  1. 您希望最终使用 python 请求来减少浏览器加载时间所花费的时间。
  2. 您期望网站 HTML 经常发生更改(尽管 POST 请求也可能发生变化,但小的参数更改可能会中断 POST 请求)

如果您有上述两个原因或第三个原因,请不要接受此作为答案,请更新问题,我将删除此答案。

下面的代码可以为您自动化流程,这是我在Selenium IDE的帮助下生成的。进行了一些修改以使用标签而不是其他硬编码的 xpath 组合,添加了可见性检查和可单击检查。

import pytest
import time
import json
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.common.exceptions import ElementNotVisibleException
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.get("https://www.businessregistration.moc.gov.kh/")
driver.maximize_window()
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[contains(text(),'Online Services')]"))).click()
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[text()='Sole Proprietorships']"))).click()
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@class='appSubMenuLink menu-brSoleProprietorSearch']/span[text()='Search Entity']"))).click()
WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.ID, "QueryString")))
driver.find_element(By.ID, "QueryString").send_keys("a")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[@class='appReceiveFocus' and text()='Search']"))).click()
time.sleep(10)
driver.quit()  

当然,它不包括搜索后从网格中提取数据的部分。在 Ubuntu 中使用 chromedriver 80.0 进行测试。

最新更新