Python 单击具有特定名称的图像
如何使用Python mechanize单击下面这样的图像Python 单击具有特定名称的图像,python,mechanize,Python,Mechanize,如何使用Python mechanize单击下面这样的图像 <a href="..."><img name="next" id="next" src="..."></a> 我知道要单击的图像的名称和id。我需要以某种方式识别父链接并单击它。我该怎么办 奖金问题:我如何检查是否有这样的图像?对于您的奖金问题,我想说您可以使用BeautifulSoup检查img元素是否有效。您可以使用urllib查看映像是否存在(至少,服务器是否会将其传递给您-否则您将返回
<a href="..."><img name="next" id="next" src="..."></a>
我知道要单击的图像的名称和id。我需要以某种方式识别父链接并单击它。我该怎么办
奖金问题:我如何检查是否有这样的图像?对于您的奖金问题,我想说您可以使用BeautifulSoup检查img元素是否有效。您可以使用urllib查看映像是否存在(至少,服务器是否会将其传递给您-否则您将返回一个错误)
您还可以查看比我更聪明的人的回答-它似乎讨论了一个名为SpiderMonkey的库以及mechanize无法单击按钮。对于您的额外问题-我想说您可以使用BeautifulSoup来检查img元素是否工作。您可以使用urllib查看映像是否存在(至少,服务器是否会将其传递给您-否则您将返回一个错误)
您还可以查看比我更聪明的人的回答-它似乎讨论了一个名为SpiderMonkey的库以及mechanize无法单击按钮。嗯,我不知道如何使用mechanize,但是我知道如何使用
lxml
:
假设我们的网页有以下代码:
。使用lxml
我们将编写以下代码:
from lxml import html
page = urlllib2.urlopen('http://example.com')
tree = html.fromstring(page.read())
link = tree.xpath('//img[@id="next"]/ancestor::a/attribute::href')
大部分魔法发生在tree.xpath
函数中,在该函数中,您首先使用//img[@id=“next”]
定义要查找的图像,然后您指定您正在查找它前面的a
标记:/concenter::a
,并且您正在专门查找href
属性:/attribute::href
。link变量现在将包含与该查询匹配的字符串列表-在本例中,链接[0]将是page2.html
-您可以urlopen()
,从而有效地单击它
对于//img[@id=“next”]
部分,您可以使用其他属性,例如://img[@name=“bla bla”]
,它将非常好地工作。您只需要考虑哪个属性更适合这种情况
我知道这个答案没有使用Mechanize,但是我希望它是一个有用的指针。祝你好运 嗯,我不知道如何使用Mechanize,但是我知道如何使用
lxml
:
假设我们的网页有以下代码:
。使用lxml
我们将编写以下代码:
from lxml import html
page = urlllib2.urlopen('http://example.com')
tree = html.fromstring(page.read())
link = tree.xpath('//img[@id="next"]/ancestor::a/attribute::href')
大部分魔法发生在tree.xpath
函数中,在该函数中,您首先使用//img[@id=“next”]
定义要查找的图像,然后您指定您正在查找它前面的a
标记:/concenter::a
,并且您正在专门查找href
属性:/attribute::href
。link变量现在将包含与该查询匹配的字符串列表-在本例中,链接[0]将是page2.html
-您可以urlopen()
,从而有效地单击它
对于//img[@id=“next”]
部分,您可以使用其他属性,例如://img[@name=“bla bla”]
,它将非常好地工作。您只需要考虑哪个属性更适合这种情况
我知道这个答案没有使用Mechanize,但是我希望它是一个有用的指针。祝你好运 使用bs4(beautifulsoup 4)非常简单,而不是使用mechanize 使用bs4检索父标记非常容易,因为在找到标记后,使用
find_all
函数查找父标记是非常容易的。由于find_all
函数返回一个数组,因此最好在img:以后执行,但这可能不适用于您的网站,这样做是安全的。见下文
编辑:我修改了代码,加入了“奖金问题”,这是我在上面描述的另一种选择。使用bs4(beautifulsoup 4)非常简单,而不是使用mechanize
使用bs4检索父标记非常容易,因为在找到标记后,使用find_all
函数查找父标记是非常容易的。由于find_all
函数返回一个数组,因此最好在img:
以后执行,但这可能不适用于您的网站,这样做是安全的。见下文
编辑:我已将代码更改为包含“奖金问题”,这是我上面描述的另一种选择。图像放置在哪里?在网站上,在GUI上还是第三个地方?@Bill在网站上。那么我帮不了你,因为我不知道python如何处理web:-)试着看看这个:图像放在哪里?在网站上,在GUI上还是在第三个地方?@Bill在网站上。那么我帮不了你,因为我不知道python如何使用web:-)请尝试浏览以下内容: