当前位置: 首页 > 面试题库 >

Beautifulsoup和AJAX表问题

宋经业
2023-03-14
问题内容

我正在编写一个脚本,用于抓取国际StarCraft 2游戏的Team
Liquid数据库的游戏。(http://www.teamliquid.net/tlpd/sc2-international/games)

但是我来提出一个问题。我的脚本遍历所有页面,但是Team
Liquid网站使用了我认为在表中的某种AJAX来更新它。现在,当我使用BeautifulSoup时,我无法获得正确的数据。

所以我遍历这些页面:

http://www.teamliquid.net/tlpd/sc2-international/games#tblt-948-1-1-DESC

http://www.teamliquid.net/tlpd/sc2-international/games#tblt-948-2-1-DESC

http://www.teamliquid.net/tlpd/sc2-international/games#tblt-948-3-1-DESC

http://www.teamliquid.net/tlpd/sc2-international/games#tblt-948-4-1-DESC
等…

当您自己打开这些页面时,您会看到不同的页面,但是我的脚本每次都始终获得相同的首页。我认为这是因为打开其他页面时,您会看到少量加载内容,将少量带有游戏的表更新到正确的页面。因此,我想beatifulsoup速度很快,需要等待表的加载和更新完成。

所以我的问题是: 我如何确保它使用更新的表?

现在,我使用此代码获取表的内容,然后将内容放入.csv中:

html = urlopen(url).read().lower()
bs = BeautifulSoup(html)
table = bs.find(lambda tag: tag.name=='table' and tag.has_key('id')
                and tag['id']=="tblt_table") 
rows = table.findAll(lambda tag: tag.name=='tr')

问题答案:

当您尝试使用AJAX抓取网站时,最好查看javascript代码的实际作用。在许多情况下,它只检索XML或HTML,比非AJAXy内容更容易抓取。它只需要查看一些源代码。

在您的情况下,站点从特殊URL本身(而不是刷新整个页面)检索表控件的HTML代码,并在浏览器DOM中动态替换它。查看http://www.teamliquid.net/tlpd/tabulator/ajax.js,您会看到此URL的格式如下:

_http://www.teamliquid.net/tlpd/tabulator/update.php?tabulator_id=1811 &
tabulator_page = 1 &tabulator_order_col = 1&tabulator_order_desc =
1&tabulator_Search&tabulator_search =_

因此,您要做的就是直接使用BeautifulSoup抓取此URL,并在每次需要下一页时都推进tabulator_page计数器。



 类似资料:
  • 我有下面的代码来刮一个页面,https://www.hotukdeals.com 由于某种原因,这种方法起作用,在循环中刮取交易的价格一定的次数,然后停止工作。 程序输出: 从输出中可以看到,在前四行之后,属性为空,但元素中有文本。 有人知道这事吗?有什么想法或解决办法吗?

  • 问题内容: 我在脚本中遇到一些问题,该问题使用PHP和jquery创建登录系统。 首先,我有PHP页面包含用于登录的表格。当用户单击提交时,我使用jQuery将数据发送到服务器 在server_login.php中,我具有执行登录用户的功能。 和jquery警报“ 1”在我的登录页面上。 问题是当我刷新我的网站并重新放置cookie时,它没有显示给我。 哪里不对了? 问题答案: 如果您正在调用的脚

  • 我正在为我的项目构建一个ajax/php联系表单,包含以下字段: 姓名(必填)、电子邮件(必填)、主题(必填)和网站(必填) 一切正常,现在唯一的问题是,如果用户没有在主题和或网站字段中键入任何内容,我收到的电子邮件显示这两个字段如下: 主题:(显示空白) 网址:(显示空白) 如果用户没有在我收到的电子邮件中键入任何内容,是否可能根本不显示这两个字段 名称:[用户名] 邮箱:[用户邮箱地址] 我只

  • 问题内容: 我正在尝试从网站上抓取表格数据。 这是一个简单的示例表: 所需的解析结果是 到目前为止,这是我最接近的尝试: 结果是: 我知道的参数,但是使用它时没有得到预期的结果。 我正在使用python 2.6和BeautifulSoup3。 问题答案: 尝试这个:

  • 问题内容: 我正在运行此课程网站的抓取工具,我想知道一旦将它放入beautifulsoup,是否有更快的方法来抓取该页面。它花费的时间比我预期的要长。 提示? 问题答案: 好的,您可以通过以下方法真正加快速度: 再往低级别的-看到正在做什么潜在的请求,并模拟它们 让我们使用解析器 使用解析页面的唯一相关部件 由于这是生成的形式,并且由于它的安全性功能,事情变得更加复杂。这是完整的代码,请不要害怕-

  • Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间. 使用BeautifulSoup解析这段代码,能够得到一个 BeautifulSoup 的对象,并能按照标准的缩进格式的结构输出: from bs4 import Beautifu