【问题标题】:Beautiful Soup not returning results美丽的汤不返回结果
【发布时间】:2020-03-12 04:19:03
【问题描述】:

我正在尝试在 python 中解析带有 BS 的页面。

这是我的代码:

years = range(2010,2021)

urls = []

for year in years:
    yr = str(year)
    url = 'https://www.spotrac.com/nba/contracts/breakdown/'+yr+'/'
    webpage = requests.get(url)
    content = webpage.content
    soup = BeautifulSoup(re.sub("<!--|-->","", content.decode('utf-8')),'lxml')
    a = soup.find('table',{'class':'datatable'})
    urls.append(a)

我没有得到任何结果。我已经两次和三次检查了页面源中表格的类。我相信(尽管我认为这是错误所在) - 我已经正确编码了 soup 变量以解释页面源的注释部分。

【问题讨论】:

  • 你检查过你从请求中得到的结果吗? re.sub("&lt;!--|--&gt;","", content.decode('utf-8')) 是怎么回事?

标签: python web-scraping beautifulsoup


【解决方案1】:

str(range(2010,2021)) 将产生一个字符串'range(2010, 2021)'。然后遍历该字符串的每个字符。所以年份的第一个值是r 等等。

另外该网站需要付费订阅,您需要登录才能查看数据

`

【讨论】:

  • 谢谢,@buran - 这是一个愚蠢的错误。我已经修复了 OP 中的 str 问题。但是,我仍然没有得到任何结果。我确实有一个高级订阅,你知道我在尝试解析时如何输入凭据吗?
  • 您需要向登录页面发出请求。根据他们网站的构建方式,取决于您是否可以只向端点发出 POST 请求并登录,或者您是否需要从登录表单中抓取隐藏字段、CSRF 令牌以及发送正确的 cookie。最好的一般建议是查看他们的页面,查看源代码并通过普通浏览器跟踪请求,并使用开发人员工具栏查看发送的内容,然后在代码中重新创建。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-30
相关资源
最近更新 更多