抓取动态网页时,无法使用python mechanize从下拉列表中检索到任何值

cookieisaac163

我对网页抓取是完全陌生的。我正在尝试按照此问题Web Scraper中的代码片段获取python中的动态表格

我正在使用http://www.goodlifefitness.com/fitness-classes/find-a-class/进行类似的搜索填写省,市和班级名称,然后搜索时间表。

但是我坚持第一步,检索了省份列表

#!/usr/bin/env python                                                                                                                                                                

import re
import mechanize
from bs4 import BeautifulSoup

br = mechanize.Browser()
br.open('http://www.goodlifefitness.com/fitness-classes/find-a-class/')

br.select_form('aspnetForm')
ctl = br.form.find_control('ctl00$Copy$ddlRegion')

但似乎我什至无法从下拉列表中得到任何东西

>>> items=ctl.get_items()
>>> items
[<Item name='' id=None selected='selected' contents='' value='' label=''>]

但是当我检查网页上的元素时,第一个下拉列表中显然有值

<select name="ctl00$Copy$ddlRegion" id="ctl00_Copy_ddlRegion" title="Select a Province" class="dropdown" onchange="comboBoxSearch_onChange(this);">

<option value="">Select a Province</option><option value="Alberta">Alberta</option><option value="British Columbia">British Columbia</option><option value="Manitoba">Manitoba</option><option value="New Brunswick">New Brunswick</option><option value="Newfoundland">Newfoundland</option><option value="Nova Scotia">Nova Scotia</option><option value="Ontario">Ontario</option><option value="Saskatchewan">Saskatchewan</option></select>

为什么ctl.get_items()什么也没退?任何指针将不胜感激。

金德尔

如您所见,如果您在Firefox中执行“查看源代码”,则所查找的项目不在服务器发送的原始HTML标记中。实际上,它们是在页面加载后由JavaScript添加的。Mechanize没有运行JavaScript,因此看不到这些项目;它只能看到HTML中的内容。

顺便说一句,对JavaScript的这种完全不必要的使用在现代Web开发中造成了困扰,并且使诸如您正在尝试做的事情比预期的要困难得多。(但是,也许这就是他们这样做的原因。)

无论如何,要从页面中抓取该信息,您需要使用一些在实际的Web浏览器中实际加载页面的东西,例如Selenium。

您链接的另一个SO问题是不同的,因为当您从菜单中进行选择时,目标站点实际上会发送HTTP POST,并返回一个全新的HTTP页面。此页面不执行此操作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Scrapy从动态网页中抓取网址

来自分类Dev

无法从下拉列表中检索GUID

来自分类Dev

从下拉列表中未选择任何值时,将模型状态设置为false

来自分类Dev

如何使用PHP从动态网页中抓取页面链接?

来自分类Dev

使用Selenium从动态网页中抓取内容会返回错误的内容

来自分类Dev

在R中抓取网页时出现问题

来自分类Dev

无法从下拉列表中设置输入标签的值

来自分类Dev

无法抓取动态网页

来自分类Dev

使用JavaScript从下拉列表中获取选定的值

来自分类Dev

无法从动态创建的选择下拉列表中检索值

来自分类Dev

无法从下拉列表中看到值

来自分类Dev

无法从下拉列表中选择值

来自分类Dev

无法从下拉列表中选择值

来自分类Dev

无法使用 Flask 从下拉列表中获取在 python 中选择的值

来自分类Dev

网页抓取动态网页Python

来自分类Dev

在动态网页中使用Python抓取按钮下载csv

来自分类Dev

无法使用python和beautifulsoup抓取网页中的某些href

来自分类Dev

使用python抓取网页时出现问题

来自分类Dev

使用 Python 抓取网页时从链接中提取 href

来自分类Dev

如何通过Python抓取动态网页

来自分类Dev

JavaScript无法从选择下拉列表中检索选项的值

来自分类Dev

JavaScript无法从选择下拉列表中检索选项的值

来自分类Dev

在Codeigniter中编辑时如何检索下拉列表的值

来自分类Dev

在Laravel中刷新页面后,从下拉列表中保留动态值

来自分类Dev

MVC4:从下拉列表选择中动态更改路由值

来自分类Dev

使用AJAX从<select>下拉列表中检索值?

来自分类Dev

从下拉列表中插入值时没有错误,但不会插入

来自分类Dev

使用 BeautifulSoup 抓取网页时出错

来自分类Dev

动态下拉列表未在MVC中返回任何值

Related 相关文章

  1. 1

    使用Scrapy从动态网页中抓取网址

  2. 2

    无法从下拉列表中检索GUID

  3. 3

    从下拉列表中未选择任何值时,将模型状态设置为false

  4. 4

    如何使用PHP从动态网页中抓取页面链接?

  5. 5

    使用Selenium从动态网页中抓取内容会返回错误的内容

  6. 6

    在R中抓取网页时出现问题

  7. 7

    无法从下拉列表中设置输入标签的值

  8. 8

    无法抓取动态网页

  9. 9

    使用JavaScript从下拉列表中获取选定的值

  10. 10

    无法从动态创建的选择下拉列表中检索值

  11. 11

    无法从下拉列表中看到值

  12. 12

    无法从下拉列表中选择值

  13. 13

    无法从下拉列表中选择值

  14. 14

    无法使用 Flask 从下拉列表中获取在 python 中选择的值

  15. 15

    网页抓取动态网页Python

  16. 16

    在动态网页中使用Python抓取按钮下载csv

  17. 17

    无法使用python和beautifulsoup抓取网页中的某些href

  18. 18

    使用python抓取网页时出现问题

  19. 19

    使用 Python 抓取网页时从链接中提取 href

  20. 20

    如何通过Python抓取动态网页

  21. 21

    JavaScript无法从选择下拉列表中检索选项的值

  22. 22

    JavaScript无法从选择下拉列表中检索选项的值

  23. 23

    在Codeigniter中编辑时如何检索下拉列表的值

  24. 24

    在Laravel中刷新页面后,从下拉列表中保留动态值

  25. 25

    MVC4:从下拉列表选择中动态更改路由值

  26. 26

    使用AJAX从<select>下拉列表中检索值?

  27. 27

    从下拉列表中插入值时没有错误,但不会插入

  28. 28

    使用 BeautifulSoup 抓取网页时出错

  29. 29

    动态下拉列表未在MVC中返回任何值

热门标签

归档