我正试图使用rlsnet.ru上的搜索表单。下面是我从源文件中提取的表单定义:
<form id="site_search_form" action="/search_result.htm" method="get">
<input id="simplesearch_text_input" class="search__field" type="text" name="word" value="" autocomplete="off">
<input type="hidden" name="path" value="/" id="path">
<input type="hidden" name="enter_clicked" value="1">
<input id="letters_id" type="hidden" name="letters" value="">
<input type="submit" class="g-btn search__btn" value="Найти" id="simplesearch_button">
<div class="sf_suggestion">
<ul style="display: none; z-index:1000; opacity:0.85;">
</ul>
</div>
<div id="contentsf">
</div>
</form>
这是我用来发送搜索请求的代码:
import requests
from urllib.parse import urlencode
root = "http://www.rlsnet.ru/search_result.htm?"
response = requests.get(root + urlencode({"word": "Церебролизин".encode('cp1251')})
每次我这样做,响应状态是403。当我在Safari/Chrome/Opera中输入相同的请求URL(即http://www.rlsnet.ru/search_result.htm?word=%D6%E5%F0%E5%E1%F0%EE%EB%E8%E7%E8%ED
)时,它工作正常并返回预期的页面。我做错什么了?搜索这个问题只会带来这样一个问题:why url works in browser but not using requests get method,这没什么用处。
因为
requests
的默认User-Agent
是python-requests/2.13.0
,在你的情况下,网站不喜欢来自“非浏览器”的流量,所以他们试图阻止这种流量。您只需要让请求看起来像来自浏览器,所以只需添加一个额外的
header
参数:相关问题 更多 >
编程相关推荐