为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Javascript 元素抓取网页

使用 Javascript 元素抓取网页

江户川乱折腾 2023-02-22 10:55:48
因此,作为我一直试图抓取的网站的序言,我似乎拥有/使用(我不确定与网络开发等相关的行话)javascript代码,并且我在尝试抓取不同的表格时取得了不同的成功在不同的页面上。例如在这个页面上:http://www.tennisabstract.com/cgi-bin/player.cgi ?p=NovakDjokovic 我很容易就能“检查元素”,然后找到Network脚本的正确“名称”,然后找到我需要的请求 URL 来获取我想要的表。我为此使用的代码是:url = 'http://www.minorleaguesplits.com/tennisabstract/cgi-bin/frags/NovakDjokovic.js'content = requests.get(url) soup = BeautifulSoup(content.text, 'html.parser') table = soup.find('table', id='tour-years', attrs= {'class':'tablesorter'}) dfs = pd.read_html(str(table))  df = pd.concat(dfs)但是,现在当我查看同一站点上的不同页面时,比如这个http://www.tennisabstract.com/charting/20190714-M-Wimbledon-F-Roger_Federer-Novak_Djokovic.html,我无法找到允许我最终获得我想要的表的请求 URL。.js我重复了与上面相同的过程,但在具有该表的网络选项卡下没有脚本。当我查看 html 元素时,我确实看到了表格,但是如果没有正确的 url,我当然无法获得它。所以我的问题是,如何从此页面http://www.tennisabstract.com/charting/20190714-M-Wimbledon-F-Roger_Federer-Novak_Djokovic.html获取表格?
查看完整描述

1 回答

?
森栏

TA贡献1810条经验 获得超5个赞

查看html页面的源代码,您可以看到所有数据都已经加载到脚本标签中。您唯一需要的是提取变量值并将其加载到 beautifulsoup。


以下代码给出了脚本标签中的所有变量和值


import requests, re

from bs4 import BeautifulSoup


res = requests.get("http://www.tennisabstract.com/charting/20190714-M-Wimbledon-F-Roger_Federer-Novak_Djokovic.html")

soup = BeautifulSoup(res.text, "lxml")

script = soup.find("script", attrs={"language":"JavaScript"}).text


var_only = script[:script.index("$(document)")].strip()

接下来,您可以使用正则表达式获取变量值 - https://regex101.com/r/7cE85A/1


查看完整回答
反对 回复 2023-02-22
  • 1 回答
  • 0 关注
  • 175 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号