【发布时间】:2018-08-20 02:39:57
【问题描述】:
我正在尝试使用 Beautiful soup 解析页面中的特定内容,您能告诉我,我该如何做到这一点? 代码:
import re
import pytz
import requests
import datetime
from flask import url_for
from bs4 import BeautifulSoup
from urllib.parse import urljoin
link = "http://www.espncricinfo.com/series/_/id/8038/season/2018/icc-world-cup-qualifiers/"
r = requests.get(link)
bigbash_article_html = r.text
soup = BeautifulSoup(bigbash_article_html, "html.parser")
details = soup.find("div",{"class":"module-list performers"})
bigbash_article_dict = {}
for div in details:
image_div = div.find("div", {"class": "img-container player"})
我不知道如何继续,我希望输出如下
预期输出:
最佳得分手:
[{'playerimage':'http://a.espncdn.com/combiner/i?img=/i/headshots/cricket/players/default-player-logo-500.png&h=55&w=40&scale=crop&transparent=true','playername':'TP Ura','player-details':'PNG, Right-hand bat','runs':'188','innings':'2','Average':'94.00'},..............................................................................................}]
另一列也一样 顶级检票员:
[{'playerimage':'http://a.espncdn.com/combiner/i?img=/i/headshots/cricket/players/default-player-logo-500.png&h=55&w=40&scale=crop&transparent=true','playername':'Ehsan Khan','player-details':'HKG, Right-arm offbreak','wickets':'9','innings':'3','Average':'12.55'},..............................................................................................}]
【问题讨论】:
-
该页面上似乎没有任何具有该类的 div。当您只是获取并保存 HTML(使用 Python、curl 或其他)并在编辑器中打开它时,您会看到这样的东西吗?如果没有,BeautifulSoup 显然也不会看到它。
-
如果页面是动态生成的——例如,有一些 JavaScript 运行并在页面加载后添加一堆充满新 div 的“模块”——那么你将无法做任何事情这边走。 (您可以在 Python 中运行 JS 引擎,或驱动浏览器。或者您可以手动计算 JS 代码在做什么,然后在 Python 中执行。)但首先:您是否检查过 ESPN 是否有用于此的 API,在尝试刮之前? (而且,如果他们没有 API,他们的 ToS 是否禁止抓取它?)
标签: python python-3.x parsing web-scraping beautifulsoup