谁能帮助我正确选择此表格?
尝试抓取谷歌,我得到错误:mechanize._mechanize.FormNotFoundError:没有与名称“ q”匹配的形式
不寻常,因为我看过其他一些使用它的教程,并且:ps我不打算向Google SLAM发送请求,只是希望使用自动选择器来不时查找学术引文pdf。
<f GET http://www.google.com.tw/search application/x-www-form-urlencoded
<HiddenControl(ie=Big5) (readonly)>
<HiddenControl(hl=zh-TW) (readonly)>
<HiddenControl(source=hp) (readonly)>
<TextControl(q=)>
<SubmitControl(btnG=Google ?j?M) (readonly)>
<SubmitControl(btnI=?n???) (readonly)>
<HiddenControl(gbv=1) (readonly)>>
>>> quit()
import os, subprocess
import re
import mechanize
from bs4 import BeautifulSoup
#prepare mechanize
br = mechanize.Browser()
br.set_handle_robots(False)
br.set_handle_equiv(False)
br.addheaders = [('User-agent', 'Mozilla/5.0')]
br.open('http://www.google.com/')
br.select_form('q')
citation = ' www.stackoverflow.com '.strip()
#citation = GOOGLE_BASE + Citation
print citation
br.open('http://www.google.com/')
br.select_form('q')
br.form['q'] = citation
br.submit()
data = br.read()
soup = BeautifulSoup(data)
print soup
您正在尝试选择一个名为的表单q
,该表单不存在。似乎该表单已被命名f
。(但是,我无法在浏览器中验证-
即使禁用了Javascript,我也只能看到一个不同的名称。)
一个简单的Google搜索可以像这样完成:
import os, subprocess
import re
import mechanize
from bs4 import BeautifulSoup
#prepare mechanize
br = mechanize.Browser()
br.set_handle_robots(False)
br.set_handle_equiv(False)
br.addheaders = [('User-agent', 'Mozilla/5.0')]
br.open('http://www.google.com/')
# do the query
br.select_form(name='f') # Note: select the form named 'f' here
br.form['q'] = 'here goes your query' # query
data = br.submit()
# parse and output
soup = BeautifulSoup(data.read())
print soup
这应该给你的想法。
更新:如何找到正确的形式“选择器”
要打印可用表格的名称,您可以执行以下操作:
for form in br.forms():
print form.name
使用交互式控制台时,这非常方便。
您不一定要使用表格的名称,但是您可能会给出其他提示以选择正确的表格。例如,在某些页面上,表单根本没有名称。然后,您仍然可以根据表格的编号进行选择,例如br.select_form(nr=1)
页面上的第二个表格。请查看help(br.select_form)
详细信息。此外,list(br.forms())
还会为您提供所有表格的列表,您可以进一步检查这些表格。
另一种选择是在通常的浏览器中手动检查页面。
我找到了这个链接并尝试应用相同的解决方案,但它不起作用,我仍然得到相同的错误 有人能帮忙吗?
再次执行项目D:\Profile\中的任务:[clean,:App:AssembleDebug] 任务:清除最新任务:App:清除任务:App:预生成最新任务:App:预调试生成最新任务:App:预调试生成最新任务:App:GenerateDebugBuildConfig任务:App:CompileDebugAIDL无源任务:App:CompileDebugrenderScript无源任务:App
问题内容: 我正在尝试使用Java通过ssl连接到我的一台服务器。我尝试了很多选择,这是我的最佳尝试: 我使用以下推荐脚本生成了jssecacerts:http : //blogs.oracle.com/andreas/resource/InstallCert.java, 其中包含以下命令:java InstallCert ssl.someUrl.de changeit 之后,我再次执行了命令:
问题内容: 我需要清除所有库存表。 我已经试过了: 但是我得到这个错误: 如果这是正确的方法,那我做错了什么? 问题答案: 使用concat: 当然,这只会生成您需要复制和运行自己的SQL。
我正在学习材料设计,特别是我想定制我的应用程序材料设计也为旧的Android版本。我正在读这本指南:https://developer.android.com/training/material/compatibility.html#SupportLib 关于调色板,指南说: 要获得材质设计样式并使用Android v7支持库自定义调色板,请应用其中一个主题。AppCompat主题: 当我尝试运行
当我尝试在Android Studio中启动我的应用程序时,它会产生如下3个错误: 错误:(3)检索项的父项时出错:找不到与给定名称“Android:TextApparance.Material.Widget.Button.Borderless.Colored”匹配的资源。 com.android.ide.common.Process.processException:org.gradle.Pro