gpt4 book ai didi

javascript - 如何使用 Mechanize 提交表单以获取下一个网页的 URL?

转载 作者:行者123 更新时间:2023-12-04 16:21:19 26 4
gpt4 key购买 nike

我正在尝试抓取一些数据,决定将mechanize 与beautifulsoup 结合使用。我必须在此网页上的表单中输入我想搜索的字段,然后单击搜索按钮进入下一个相关页面,我想获取其 URL 来抓取数据。

开发者模式显示了表单的以下代码-

<form name="topsearch" id="topsearch" method="get" onsubmit="javascript:return search_post();" action="">
<input type="hidden" name="search_data" id="search_data" value="">
<input type="hidden" name="cid" id="cid" value="">
<input type="hidden" name="mbsearch_str" id="mbsearch_str">
<input type="hidden" name="topsearch_type" id="topsearch_type" value="1">
<input name="search_str" id="search_str" autocomplete="off" onkeyup="getAutosuggesion();" type="text" value="Search Quotes, News, NAVs..." onblur="if(this.value=='')this.value='Search Quotes, News, NAVs...';" onfocus="if(this.value=='Search Quotes, News, NAVs...')this.value='';if(this.value=='Search Quotes, News, NAVs...')this.value='';" class="txtsrchbox">
<div id="autosugg_mc" class="sugbx"></div>
<div class="PR srch_qote">
<div class="srchdrp" id="srchR">Quotes</div>
<div id="srch" class="qubx">
<ul class="qlist">
<li><a onclick="tab_topser('1');getAutosuggesion();" id="tab1" href="javascript:void(0)" class="">Quotes</a></li>
<li><a onclick="tab_topser('2');getAutosuggesion();" id="tab2" href="javascript:void(0)" class="">NAVs</a></li>
<li><a onclick="tab_topser('5');" id="tab5" href="javascript:void(0)" class="">Commodities</a></li>
<li><a onclick="tab_topser('9');" id="tab9" href="javascript:void(0)" class="active">Futures</a></li>
<li><a onclick="tab_topser('3');getAutosuggesion();" id="tab3" href="javascript:void(0)" class="">News</a></li>
<li><a onclick="tab_topser('4');" id="tab4" href="javascript:void(0)" class="">Messages</a></li>
<li><a onclick="tab_topser('6');getAutosuggesion();" id="tab6" href="javascript:void(0)" class="">Notices</a></li>
<li><a onclick="tab_topser('7');" id="tab7" href="javascript:void(0)" class="">Videos</a></li>
<li><a class="" onclick="tab_topser('8');" id="tab8" href="javascript:void(0)">All</a></li>
</ul>
</div>
</div>
<a href="javascript:;" onclick="$('#topsearch').submit()" style="float:left;" class="btn_search"></a>
<div class="CL"></div>
</form>

我使用我的相关搜索项填写表格 -
import pandas as  pd
import urllib2
import BeautifulSoup as bs
import mechanize

baseURL = "someBaseURL"
br = mechanize.Browser()
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)


#Open the Website
r = br.open(baseURL)

#Selecting the first form of the page
br.select_form(nr=0)
print br.geturl()

br.form['search_str'] = "Some Search"
br.submit()

print br.geturl()

提交表单后,如果我在网站上手动搜索相同的字符串,该 url 不会更改为它转到的 url。

提交后我得到了网址 -
'baseURL?search_data=&cid=&mbsearch_str=&topsearch_type=1&search_str=Kiri+Industries'

而如果我手动提交,我会使用 URL 进入下一页 -
'baseURL/stockpricequote/dyes-pigments/kiriindustries/KDC01'

这是我需要能够抓取数据的 URL。

提交按钮是否使用了无法使用 Mechanize 调用的 javascript,如果这是问题,我该如何使其工作?

任何帮助表示赞赏,谢谢。

最佳答案

似乎,至少从我的类似问题来看, Mechanize 根本不处理 Javascript。尝试使用 selenium 它可以很好地处理 javascript。我正在构建我的脚本,如果它解决了我的问题,我会更新。

关于javascript - 如何使用 Mechanize 提交表单以获取下一个网页的 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39453333/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com